需要依赖的jar包
/* RabbitMQ of Gradle */ compile("com.rabbitmq:amqp-client:5.1.2") compile("org.springframework.amqp:spring-rabbit:2.0.1.RELEASE") /* RabbitMQ of Maven*/ <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.1.2</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.0.1.RELEASE</version> </dependency>
direct交换器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd"> <description>Spring RabbitMQ 整合配置</description> <!-- virtual-host:虚拟主机,用于权限管理,默认为 / --> <rabbit:connection-factory id="connectionFactory" host="192.168.41.128" port="5672" username="admin" password="admin" virtual-host="/"/> <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成--> <rabbit:admin connection-factory="connectionFactory"/> <!-- 咨询订单创建成功 --> <rabbit:queue id="q_consult_create_id" name="q_consult_create_name" durable="true" auto-delete="false" exclusive="false"/> <!-- 咨询订单支付成功 --> <rabbit:queue id="q_order_pay_id" name="q_order_pay_name" durable="true" auto-delete="false" exclusive="false"/> <!-- direct exchange --> <rabbit:direct-exchange name="myDirectExchangeName" id="myDirectExchangeId"> <rabbit:bindings> <rabbit:binding queue="q_consult_create_id" key="q_consult_create_routeKey"/> <rabbit:binding queue="q_order_pay_id" key="q_order_pay_routeKey"/> </rabbit:bindings> </rabbit:direct-exchange> <!-- spring amqpTemplate声明,此处exchange不能使用id指定 --> <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="myDirectExchangeName"/> <!-- 消费者 --> <bean id="consumerListener" class="cn.gov.wu.rabbit.ConsumerListener"/> <rabbit:listener-container connection-factory="connectionFactory"> <!-- 使用queues或者queue-names都可以 --> <rabbit:listener ref="consumerListener" method="receiveMsg" queues="q_consult_create_id,q_order_pay_id"/> <!--<rabbit:listener ref="consumerListener" method="receiveMsg" queue-names="q_consult_create_name,q_order_pay_name"/>--> </rabbit:listener-container> </beans>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/rabbitmq-config-direct.xml"); AmqpTemplate amqpTemplate = context.getBean("amqpTemplate", AmqpTemplate.class); String routingKey = "q_consult_create_routeKey"; amqpTemplate.convertAndSend(routingKey, "给队列 q_consult_create 发送消息"); routingKey = "q_order_pay_routeKey"; amqpTemplate.convertAndSend(routingKey, "给队列 q_order_pay 发送消息"); context.close();
topic交换器
特别注意:发往topic转发器的消息不能随意的设置选择键(routing_key),必须是由点隔开的一系列的标识符组成。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd"> <description>Spring RabbitMQ 整合配置</description> <!-- virtual-host:虚拟主机,用于权限管理,默认为 / --> <rabbit:connection-factory id="connectionFactory" host="192.168.41.128" port="5672" username="admin" password="admin" virtual-host="/"/> <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成--> <rabbit:admin connection-factory="connectionFactory"/> <!-- 咨询订单创建成功 --> <rabbit:queue id="q_topic_consult_create_id" name="q_topic_consult_create_name" durable="false" auto-delete="false" exclusive="false"/> <!-- 咨询订单支付成功 --> <rabbit:queue id="q_topic_order_pay_id" name="q_topic_order_pay_name" durable="false" auto-delete="false" exclusive="false"/> <!-- topic exchange --> <rabbit:topic-exchange name="myTopicExchangeName" id="myTopicExchangeId" durable="false"> <rabbit:bindings> <rabbit:binding pattern="#.create.*.routeKey" queue="q_topic_consult_create_id"/> <rabbit:binding pattern="q.*.*.routeKey" queue="q_topic_order_pay_id"/> </rabbit:bindings> </rabbit:topic-exchange> <!-- spring amqpTemplate声明,此处exchange不能使用id指定 --> <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="myTopicExchangeName"/> <!-- 消费者 --> <bean id="consumerListener" class="cn.gov.wu.rabbit.ConsumerListener"/> <rabbit:listener-container connection-factory="connectionFactory"> <!-- 使用queues或者queue-names都可以 --> <rabbit:listener ref="consumerListener" method="receiveMsg" queues="q_topic_consult_create_id,q_topic_order_pay_id"/> </rabbit:listener-container> </beans>
// 发往topic转发器的消息不能随意的设置选择键(routing_key),必须是由点隔开的一系列的标识符组成 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/rabbitmq-config-topic.xml"); AmqpTemplate amqpTemplate = context.getBean("amqpTemplate", AmqpTemplate.class); String exchangeName = "myTopicExchangeName"; String routingKey1 = "a.create.consult.routeKey"; String routingKey2 = "q.create.consult.routeKey"; amqpTemplate.convertAndSend(exchangeName, routingKey1, "给exchange myTopicExchangeName 发送消息, routeKey为 a.create.consult.routeKey"); amqpTemplate.convertAndSend(exchangeName, routingKey2, "给exchange myTopicExchangeName 发送消息, routeKey为 b.create.consult.routeKey"); String routingKey3 = "q.order.pay.routeKey"; amqpTemplate.convertAndSend(exchangeName, routingKey3, "给exchange myTopicExchangeName 发送消息, routeKey为 q.order.pay.routeKe"); context.close();
fanout交换器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rabbit="http://www.springframework.org/schema/rabbit" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd"> <description>Spring RabbitMQ 整合配置</description> <!-- virtual-host:虚拟主机,用于权限管理,默认为 / --> <rabbit:connection-factory id="connectionFactory" host="192.168.41.128" port="5672" username="admin" password="admin" virtual-host="/"/> <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成--> <rabbit:admin connection-factory="connectionFactory"/> <!-- 咨询订单创建成功 --> <rabbit:queue id="q_fanout_consult_create_id" name="q_topic_consult_create_name" durable="false" auto-delete="false" exclusive="false"/> <!-- 咨询订单支付成功 --> <rabbit:queue id="q_fanout_order_pay_id" name="q_topic_order_pay_name" durable="false" auto-delete="false" exclusive="false"/> <!-- fanout exchange --> <rabbit:fanout-exchange name="myFanoutExchangeName" id="myFanoutExchangeId"> <rabbit:bindings> <rabbit:binding queue="q_fanout_consult_create_id"/> <rabbit:binding queue="q_fanout_order_pay_id"/> </rabbit:bindings> </rabbit:fanout-exchange> <!-- spring amqpTemplate声明,此处exchange不能使用id指定 --> <rabbit:template id="amqpTemplate" connection-factory="connectionFactory" exchange="myFanoutExchangeName"/> <!-- 消费者 --> <bean id="consumerListener" class="cn.gov.wu.rabbit.ConsumerListener"/> <rabbit:listener-container connection-factory="connectionFactory"> <!-- 使用queues或者queue-names都可以 --> <rabbit:listener ref="consumerListener" method="receiveMsg" queues="q_fanout_consult_create_id,q_fanout_order_pay_id"/> </rabbit:listener-container> </beans>
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/rabbitmq-config-fanout.xml"); AmqpTemplate amqpTemplate = context.getBean("amqpTemplate", AmqpTemplate.class); amqpTemplate.convertAndSend("发送fanout消息"); context.close();
相关推荐
本文将详细介绍如何整合Spring与RabbitMQ,以实现高效的消息传递。 首先,我们要理解Spring对RabbitMQ的支持主要体现在Spring AMQP项目中,它为RabbitMQ提供了一套高级抽象层,使得开发者能够更加便捷地使用...
在"spring整合rabbitmq需要的jar包(spring版本4.2.0)"中,提到了几个核心的库文件,它们分别是: 1. **spring-rabbit-1.5.1.RELEASE.jar**:这是Spring对RabbitMQ的官方支持模块,它提供了与RabbitMQ集成的API和...
首先,让我们理解Spring集成RabbitMQ的基本步骤: 1. **添加依赖**:在你的`pom.xml`或`build.gradle`文件中,你需要添加Spring AMQP和RabbitMQ客户端库的依赖。对于Maven用户,可以添加如下依赖: ```xml ...
本文将详细讲解如何在Spring项目中集成RabbitMQ,实现基于RPC(远程过程调用)的通信模式。 首先,我们需要在项目中引入Spring AMQP库,这是Spring对RabbitMQ的官方支持。可以通过在pom.xml文件中添加以下Maven依赖...
本实例主要介绍如何在Spring应用中集成RabbitMQ,构建一个完整的消息传递系统。首先,你需要确保已经安装了RabbitMQ服务器,并且能够正常运行。RabbitMQ通常通过AMQP(Advanced Message Queuing Protocol)协议进行...
RabbitMQ入门到进阶(Spring整合RabbitMQ&SpringBoot整合RabbitMQ).doc
rabbitmq spring rabbitmq spring rabbitmq spring rabbitmq spring http://knight-black-bob.iteye.com/blog/2304089
此源码是在前人Demo的基础上自己改造的,主要讲了spring和rabbitMQ的整合与使用。其中包含两个项目,一个Producer,一个Consumer,能够分别运行。Producer生产并发送消息到RabbitMQ,Consumer从RabbitMQ接收并处理...
**SSM集成RabbitMQ最初始的项目信息详解** 在Java Web开发中,Spring、Struts和MyBatis(简称SSM)是一个常见的框架组合,它们分别负责控制层、表现层和数据持久化层。而RabbitMQ则是一个强大的消息中间件,常用于...
介绍Spring Cloud Stream与RabbitMQ集成的代码示例。Spring Cloud Stream是一个建立在Spring Boot和Spring Integration之上的框架,有助于创建事件驱动或消息驱动的微服务。
通过上述步骤,你可以在Spring应用程序中成功集成RabbitMQ,并利用direct、topic和fanout交换器实现高效的消息路由。在实际项目中,根据业务需求选择合适的交换器模式,可以提高系统的可扩展性和可靠性。
本文将详细探讨如何在Spring项目中集成RabbitMQ,并实现两个系统间的通信。 首先,我们需要在项目中添加RabbitMQ的相关依赖。在Maven的pom.xml文件中,我们需要引入Spring AMQP和RabbitMQ的客户端库: ```xml ...
在这个基于Spring集成RabbitMQ的源码示例中,我们主要会关注三种不同的交换机类型:direct、topic和fanout。 1. **Direct Exchange(直连交换机)**: 直连交换机是最简单的模型,它将消息路由到绑定键与发布时...
1. 引入依赖:在项目中添加RabbitMQ的Spring整合依赖,如`spring-amqp`库。 2. 配置RabbitMQ:在Spring的配置文件中,定义连接工厂、信道配置以及RabbitMQ服务器的相关属性。 3. 创建消息模板:使用`RabbitTemplate`...
如果你使用Spring Boot,集成RabbitMQ变得更简单。只需在`application.properties`或`yaml`文件中配置RabbitMQ的相关属性,Spring Boot会自动配置所需的bean。 总的来说,通过Spring与RabbitMQ的集成,我们可以方便...
将RabbitMQ与Spring整合,可以更好地管理和处理消息传递。 本示例代码基于Java和Maven构建,展示了如何在Spring项目中集成RabbitMQ。以下是集成过程的关键步骤和知识点: 1. **依赖管理**:首先,在Maven的`pom....
在这个场景中,"java rabbitmq动态注册,监听实现"涉及到的主要知识点是利用Spring Boot框架与RabbitMQ集成,动态配置消费者,并实现实时监听消息。 1. **Spring Boot与RabbitMQ集成**: Spring Boot简化了...