SpringMain_Fanout.java
package com.xzp.rabbitmq.spring.fanout; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * main程序 * 交换机为- 》fanout: 代表 "订阅模式" 《订阅就接收到消息》 */ public class SpringMain_Fanout { public static void main(final String... args) throws Exception { AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring/rabbitmq-context-fanout.xml"); //RabbitMQ模板 //RabbitTemplate template = ctx.getBean(RabbitTemplate.class); RabbitTemplate amqpTemplate_fanout = (RabbitTemplate) ctx.getBean("amqpTemplate_fanout"); //发送消息 String str = "Hello, world!, This exchange is fanout !!"; amqpTemplate_fanout.convertAndSend(str); System.out.println(); System.out.println("发送消息: " + str); System.out.println(); // 休眠1秒 Thread.sleep(1000); //容器销毁 ctx.destroy(); } }
Consumer01.java
package com.xzp.rabbitmq.spring.fanout; /** * 消费者1 * 交换机为- 》fanout: 代表 "订阅模式" 《订阅就接收到消息》 */ public class Consumer01 { //具体执行业务的方法 public void listen(String foo) { System.out.println(); System.out.println(); System.out.println("fanout 消费者 Consumer01: " + foo); System.out.println(); System.out.println(); } }
Consumer02.java
package com.xzp.rabbitmq.spring.fanout; /** * 消费者2 * 交换机为- 》fanout: 代表 "订阅模式" 《订阅就接收到消息》 */ public class Consumer02 { //具体执行业务的方法 public void listen(String foo) { System.out.println(); System.out.println(); System.out.println("fanout 消费者 Consumer02: " + foo); System.out.println(); System.out.println(); } }
rabbitmq-context-fanout.xml
<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/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.4.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> <!--定义连接工厂--> <rabbit:connection-factory id="connectionFactory" host="127.0.0.1" port="5672" username="baseup" password="wukong@123" virtual-host="/baseup" /> <!-- MQ的管理,包括队列、交换器等 --> <rabbit:admin id="rabbitAdmin_fanout" connection-factory="connectionFactory" /> <!-- 定义Rabbit模板,指定连接工厂以及定义exchange --> <rabbit:template id="amqpTemplate_fanout" connection-factory="connectionFactory" exchange="exchange_setting_fanout" /> <!-- 定义队列,自动声明 --> <rabbit:queue name="exchange_setting_fanout_queue01" auto-declare="true" declared-by="rabbitAdmin_fanout" /> <rabbit:queue name="exchange_setting_fanout_queue02" auto-declare="true" declared-by="rabbitAdmin_fanout" /> <!-- 定义交换器,自动声明 --> <rabbit:fanout-exchange name="exchange_setting_fanout" auto-declare="true" declared-by="rabbitAdmin_fanout"> <rabbit:bindings> <rabbit:binding queue="exchange_setting_fanout_queue01" /> <rabbit:binding queue="exchange_setting_fanout_queue02" /> </rabbit:bindings> </rabbit:fanout-exchange> <!-- 队列监听 --> <rabbit:listener-container connection-factory="connectionFactory"> <rabbit:listener ref="consumer01" method="listen" queue-names="exchange_setting_fanout_queue01" /> <rabbit:listener ref="consumer02" method="listen" queue-names="exchange_setting_fanout_queue02" /> </rabbit:listener-container> <!--定义消费Bean--> <bean id="consumer01" class="com.xzp.rabbitmq.spring.fanout.Consumer01" /> <bean id="consumer02" class="com.xzp.rabbitmq.spring.fanout.Consumer02" /> </beans>