我一直在转换必须使用Spring @Configuration机制配置到RabbitMQ的连接的应用程序-最初,我使用xml bean定义文件来描述配置。

这是我的原始配置:

<beans ...;><context:property-placeholder/><rabbit:connection-factory id="rabbitConnectionFactory" username="${rabbit.user}" host="localhost" password="${rabbit.pass}" port="5672"/><rabbit:template id="amqpTemplate"connection-factory="rabbitConnectionFactory"exchange="rmq.rube.exchange"routing-key="rube.key"channel-transacted="true"/><rabbit:queue name="rmq.rube.queue" durable="true"/><rabbit:direct-exchange name="rmq.rube.exchange" durable="true"><rabbit:bindings><rabbit:binding queue="rmq.rube.queue" key="rube.key"></rabbit:binding></rabbit:bindings></rabbit:direct-exchange></beans>

这是一个相当简单的配置:

  • 建立与RabbitMQ服务器的连接,
  • 创建一个持久队列(如果不可用)
  • 创造持久的交流
  • 并配置一个绑定,以基于称为“ rube.key”的路由键将消息发送到交换机以路由到队列

可以将其转换为以下基于@Configuration的java配置:

@Configuration
public class RabbitConfig {@Autowiredprivate ConnectionFactory rabbitConnectionFactory;@BeanDirectExchange rubeExchange() {return new DirectExchange("rmq.rube.exchange", true, false);}@Beanpublic Queue rubeQueue() {return new Queue("rmq.rube.queue", true);}@BeanBinding rubeExchangeBinding(DirectExchange rubeExchange, Queue rubeQueue) {return BindingBuilder.bind(rubeQueue).to(rubeExchange).with("rube.key");}@Beanpublic RabbitTemplate rubeExchangeTemplate() {RabbitTemplate r = new RabbitTemplate(rabbitConnectionFactory);r.setExchange("rmq.rube.exchange");r.setRoutingKey("rube.key");r.setConnectionFactory(rabbitConnectionFactory);return r;}
}

该配置看起来比配置的xml版本要简单得多。 不过我在这里有点作弊,您应该会看到缺少的connectionFactory,它只是被注入到此配置中,它是从哪里来的。这实际上是基于Spring Boot的应用程序的一部分,并且有一个Spring Boot Auto配置用于RabbitMQ connectionFactory基于在类路径中是否存在RabbitMQ相关库。

如果您有兴趣进一步探索,这里是完整的配置– https://github.com/bijukunjummen/rg-si-rabbit/blob/master/src/main/java/rube/config/RabbitConfig.java

参考文献:

  • Spring-AMQP项目在这里
  • 这里使用RabbitMQ的Spring-Boot入门项目

翻译自: https://www.javacodegeeks.com/2014/10/spring-configuration-rabbitmq-connectivity.html

Spring @Configuration – RabbitMQ连接相关推荐

  1. Spring使用RabbitMQ连接池的方法

    1.配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:/ ...

  2. RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ

    什么是RabbitMQ 1.1 MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器.多用于分布式系统之间进行通信. ⚫ MQ,消息队列,存储消息的中间件 ⚫ ...

  3. Java笔记-Spring中RabbitMQ的调用

    目录 基本概念 代码与演示 基本概念 Spring中已经整合了RabbitMQ,通过配置bean文件,然后在源码中加载,可以简化代码操作. 身为C++程序员不得不说这种方式真的是太爽了. 在本人做过的 ...

  4. 消息队列-----生成者 Spring整合rabbitmq

    最近做Spring结合Rabbitmq,然后往队列里面发送了一个消息,如何查看消息 打开:http://127.0.0.1:15672 输入用户名和密码:找到你的队列 我们可以找到自己的队列,并且发现 ...

  5. RabbitMQ学习总结(7)——Spring整合RabbitMQ实例

    2019独角兽企业重金招聘Python工程师标准>>> 1.RabbitMQ简介 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消 ...

  6. Spring接入RabbitMQ

    在原有的Spring项目中接入RabbitMQ,使用的Spring集成RabbitMQ,这样 RabbitMQ的功能调用通过Spring封装,调用更加简洁. 首先pom 文件中引入依赖 <dep ...

  7. spring整合rabbitMQ最新版

    文章目录 一.简单对象 1. 依赖 2. 生产者 3. 消费者 4. 配置文件 5. spring版本 二.复杂对象 2.1. 生产者 2.2. 消费者 一.简单对象 1. 依赖 <!--spr ...

  8. Spring AMQP RabbitMQ示例

    Spring AMQP RabbitMQ示例 今天我们将研究Spring AMQP RabbitMQ示例应用程序.我们之前的帖子中已经讨论了一些"Spring AMQP基础知识理论" ...

  9. 【转】SSH中 整合spring和proxool 连接池

    [摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简 ...

最新文章

  1. php mysql execute语法_PHP PDOStatement::execute讲解
  2. Pandas判断dataframe是否为空
  3. python翻译程序-Python桌面应用案例:TXT文档翻译工具(源代码)
  4. ESXi上的固态硬盘识别为非SSD
  5. SpringDataRedis对Redis的数据类型的常用操作API的使用代码举例
  6. 蓝桥练习-算法训练 Collecting Luggage
  7. wp自定义帖子没标签_ofollow标签的作用有重大变化
  8. python socket server accpet 时间_Python socket.accept非阻塞?
  9. 详解SESSION与COOKIE的区别
  10. Redis-HyperLogLog
  11. uvccamera 后台服务_UVCCamera的一些坑
  12. 【三维路径规划】基于matlab广度优先搜索算法无人机三维路径规划【含Matlab源码 270期】
  13. 力软(.NET)敏捷开发框架,让开发变的更简单
  14. 2022年深圳市集成电路专项资助计划项目申报条件及材料,补贴3000万
  15. docx文件转pdf,使用aspose words 转pdf,并且解决表格格式错乱
  16. 微信公众号:weixin-js-sdk使用总结
  17. 一个遮罩层怎么遮罩两个图层_遮罩效果全解(13种方法)
  18. Java StringTokenzier
  19. 业余数学牛人的数学自学心得(转载)
  20. [刷题]leetcode\977_有序数组的平方

热门文章

  1. SpringAOP的Aspectj方式*
  2. mybatis三种(查询,参数传递)
  3. Linux获取本机hostname函数,Linux下获得主机与域名-gethostbyname和gethostbyaddr
  4. (转-这篇文章非常棒) Thread的中断机制(interrupt)
  5. removeAll throws java.lang.UnsupportedOperationException
  6. 骆驼(camel)命名法_Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心)
  7. idea 切换java11_Java 11就在这里,您准备好进行切换了吗?
  8. adf4351使用_使用ADF绑定创建视图对象行CreateInsert操作
  9. 视图中::text_新CalendarFX视图:MonthGridView!
  10. jigsaw kaggle_使用Project Jigsaw的JDK 9 Early Access上的Eclipse IDE