<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.6.8.RELEASE</version>
</dependency>
<bean id="connectionFactory"
class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<property name="username" value="${mq.user}" />
<property name="password" value="${mq.pwd}" />
<property name="host" value="${mq.address}" />
<property name="port" value="${mq.port}" />
<property name="virtualHost" value="${mq.vhost}" />
</bean>
<bean id="rabbitAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin">
<constructor-arg ref="connectionFactory" />
</bean>
<bean id="serializerMessageConverter"
class="org.springframework.amqp.support.converter.SimpleMessageConverter" />
<!-- 建立rabbitTemplate 消息模板類 -->
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<constructor-arg ref="connectionFactory" />
<property name="exchange" value="${mq.exchange}" />
<property name="routingKey" value="${mq.routingKey}" />
<property name="queue" value="${mq.queue}" />
<property name="messageConverter" ref="serializerMessageConverter" />
</bean>
<bean id="queue" class="org.springframework.amqp.core.Queue">
<constructor-arg index="0" value="${mq.queue}"></constructor-arg>
<constructor-arg index="1" value="true"></constructor-arg>
<constructor-arg index="2" value="false"></constructor-arg>
<constructor-arg index="3" value="false"></constructor-arg>
</bean>
<!--
<bean id="directExchange" class="org.springframework.amqp.core.DirectExchange"> <constructor-arg index="0" value="${mq.routingKey}"></constructor-arg> <constructor-arg index="1" value="true"></constructor-arg> <constructor-arg index="2" value="false"></constructor-arg> </bean>
<util:map id="arguments"> </util:map>
<bean id="binding" class="org.springframework.amqp.core.Binding"> <constructor-arg index="0" value="${mq.queue}"></constructor-arg> <constructor-arg index="1" value="QUEUE"></constructor-arg> <constructor-arg index="2" value="${mq.exchange}"></constructor-arg> <constructor-arg index="3" value="${mq.routingKey}"></constructor-arg> <constructor-arg index="4" value="#{arguments}"></constructor-arg> </bean>
-->
<bean id="rmqProducer" class="com.xxxx.RmqProducer">
<property name="rabbitTemplate" ref="rabbitTemplate" />
</bean>
<bean id="rmqConsumer" class="com.xxxx.RmqConsumer" />
<bean id="messageListenerAdapter"
class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="rmqConsumer" />
<property name="defaultListenerMethod" value="rmqConsumeMessage"></property>
<property name="messageConverter" ref="serializerMessageConverter"></property>
</bean>
<bean id="listenerContainer"
class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="queues" ref="queue"></property>
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="messageListener" ref="messageListenerAdapter"></property>
</bean>
mq.address=xxxx
mq.exchange=xxxxx
mq.routingKey=xxx
mq.queue=xxx
mq.port=5672
mq.user=xxxx
mq.pwd=xxxx
mq.timeout=5000
mq.vhost=lms
public class RmqProducer {
private static final Logger LOGGER = LoggerFactory.getLogger(RmqConsumer.class);
private RabbitTemplate rabbitTemplate;
/**
* 發送信息
*/
public void sendMessage(RabbitMessage msg) {
try {
// 發送信息
rabbitTemplate.convertAndSend(msg);
} catch (Exception e) {
LOGGER.error("rmq消費者任務處理出現異常", e);
}
}
public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
}
public class RmqConsumer {
private static final Logger LOGGER = LoggerFactory.getLogger(RmqConsumer.class);
public void rmqConsumeMessage(Object obj) {
LOGGER.info("rmq 消費者任務:{}", JSON.toJSONString(obj));
// TODO 具體的消費策略
}
}