依赖包

        <dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.6.8.RELEASE</version>
</dependency>

spring-xxx.xml 配置文件

    <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>

profile.xml 中相关配置

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 具体的消费策略
}
}

使用

    • 使用时只需要注入相应的bean即可使用
    • 如果有多个队列,注意以下Bean的定义
    1. rmqProducer
    2. rmqConsumer
    3. messageListenerAdapter
    4. LisetenerContainer

备注

  • 如果已经在rabbit的图形化界面bind相关的exchange 和 quene,橙色斜体加粗子部分可以省略;

最新文章

  1. [原创] Delphi小工具(Windows资源管理器右键菜单扩展)
  2. JMeter Http测试计划
  3. LFS初次成功+如何粘贴复制LFS命令
  4. Spark-1.0.1 的make-distribution.sh编译、SBT编译、Maven编译 三种编译方法
  5. AdaBoost算法简介
  6. 【iCore2模块】VGA模块样板谍照!
  7. C#学习笔记4:关键词大小写、复合格式化等
  8. Linux下配置QT环境
  9. 《第一行代码》学习笔记28-内容提供器Content Provider(1)
  10. Paragraph Vector在Gensim和Tensorflow上的编写以及应用
  11. [LeetCode]题解(python):096-Unique Binary Search Trees
  12. 【Java每日一题】20170116
  13. CentOS编译安装LNMP环境
  14. 用smarty来做简易留言系统,明细步骤简单操作
  15. 回归树(Regression Tree)
  16. Java面向对象概述及三大特征(封装,继承和多态)
  17. Jmeter调用自定义jar包
  18. UML示例图 zt
  19. 感觉不错的随笔 关于C、C++的
  20. python学习之——习题一

热门文章

  1. iOS 获取当前响应链的First Responder (Swift)
  2. 二分查找 BestCoder Round #36 ($) Gunner
  3. innobackupex的使用
  4. Unity基础知识
  5. 用NPOI从Excel到DataTable
  6. 【转】哪个更快:Java堆还是本地内存
  7. SQL Server 2008还原数据库的具体方法
  8. 6 Specialzed layers 特殊层 第二部分 读书笔记
  9. php配置之include_path
  10. PMP项目管理学习笔记(8)——整个管理之监控项目工作、综合变更控制、结束项目或阶段