<description>rabbitmq 连接服务配置</description>
<!-- 连接配置 -->
<!-- <rabbit:connection-factory id="mqConnectionFactory" addresses="${mq.addresses}" username="${mq.username}" password="${mq.password}" virtual-host="${mq.vhost}" /> -->
<rabbit:connection-factory id="mqConnectionFactory" addresses="${mq.addresses}" username="${mq.username}" password="${mq.password}" virtual-host="${mq.vhost}" />
<!-- spring template声明 -->
<rabbit:template id="amqpTemplate" exchange="myExchange"
connection-factory="mqConnectionFactory" message-converter="jsonMessageConverter" />
<!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
<rabbit:admin connection-factory="mqConnectionFactory" />
<!-- 声明消息队列 -->
<!-- durable:是否持久化,宕机恢复后会重持久化日志恢复消息队列 -->
<!-- exclusive: 仅创建者可以使用的私有队列,断开后自动删除 -->
<!-- auto_delete: 当所有消费客户端连接断开后,是否自动删除队列 -->
<!-- 若已经声明消息队列,并且设置跟以下设置不一致,会报错,必须先去管理中心删除该消息队列,再重新创建消息队列 -->
<rabbit:queue id="myQueue" name="myQueue" durable="true"
auto-delete="false" exclusive="false" />
<!-- 定义交换机 -->
<rabbit:direct-exchange id="myExchange" name="myExchange"
durable="true" auto-delete="false">
<!-- 可以绑定多个消息队列 -->
<rabbit:bindings>
<rabbit:binding queue="myQueue" key="myQueueKey" />
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 消息对象json转换类 -->
<bean id="jsonMessageConverter"
class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
<!-- 定义监听器 acknowledge="manual" 手动ack -->
<rabbit:listener-container
connection-factory="mqConnectionFactory" >
<rabbit:listener queues="myQueue" ref="queueListenter" />
</rabbit:listener-container>
<!-- 定义监听队列的处理类 -->
<bean id="queueListenter" class="com.seawin.common.tool.mq.QueueListener" />
<bean id="messageBuilder" class="com.seawin.common.tool.mq.MessageBuilder" />
–监听接收消息的类
public class WechatFreightPushListenter implements ChannelAwareMessageListener{
@Override
public void onMessage(Message message, Channel channel) throws Exception {
MessageTemplate msgTemplate = null;
try {
String body = new String(message.getBody());
//接收到的内容,后续进行逻辑处理
System.out.println("body---"+body);
msgTemplate = JSON.parseObject(body, MessageTemplate.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
jar包spring-rabbit
至于异常处理这块还在研究学习