介绍
本篇文章为大家展示了弹簧引导如何实现对RabbitMQ整合,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
分列交换消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略。
如上图所示,即当使用扇出交换器时,他会将消息广播到与该交换器绑定的所有队列上,这有利于你对单条消息做不同的反应。
例如存在以下场景:一个web服务要在用户完善信息时,获得积分奖励,这样你就可以创建两个对列,一个用来处理用户信息的请求,另一个对列获取这条消息是来完成积分奖励的任务。
<强> 1).Queue配置类强>
FanoutRabbitConfig。java类:
包com.example.rabbitmqfanout; 进口org.springframework.amqp.core.Binding; 进口org.springframework.amqp.core.BindingBuilder; 进口org.springframework.amqp.core.FanoutExchange; 进口org.springframework.amqp.core.Queue; 进口org.springframework.context.annotation.Bean; 进口org.springframework.context.annotation.Configuration; @ configuration 公开课FanoutRabbitConfig {//创建队列 @ bean 公共队列判断(){ 返回新队列(“fanout.A"); }//创建队列 @ bean 公共队列BMessage () { 返回新队列(“fanout.B"); }//创建队列 @ bean 公共队列CMessage () { 返回新队列(“fanout.C"); }//创建分列交换器 @ bean FanoutExchange FanoutExchange () { 返回新FanoutExchange (“fanoutExchange"); }//将对列绑定到扇出交换器 @ bean 绑定bindingExchangeA(队列判断,FanoutExchange FanoutExchange) { 返回BindingBuilder.bind(判断),(fanoutExchange); }//将对列绑定到扇出交换器 @ bean 绑定bindingExchangeB(队列BMessage FanoutExchange FanoutExchange) { 返回BindingBuilder.bind (BMessage), (fanoutExchange); }//将对列绑定到扇出交换器 @ bean 绑定bindingExchangeC(队列CMessage FanoutExchange FanoutExchange) { 返回BindingBuilder.bind (CMessage), (fanoutExchange); } }
<强> 2)。消息生产者强>
FanoutSender。java类:
包com.example.rabbitmqfanout.rabbitmq; 进口org.springframework.amqp.core.AmqpTemplate; 进口org.springframework.beans.factory.annotation.Autowired; 进口org.springframework.stereotype.Component; @ component 公开课FanoutSender { @ autowired 私人AmqpTemplate rabbitTemplate; 公共空间发送(){ 字符串内容=班?扇出味精“; System.out.println(“发件人:”;+上下文); this.rabbitTemplate.convertAndSend (“fanoutExchange",““,上下文); } }
<强> 3)。消息消费者强>
FanoutReceiverA。java类:
包com.example.rabbitmqfanout.rabbitmq; 进口org.springframework.amqp.rabbit.annotation.RabbitHandler; 进口org.springframework.amqp.rabbit.annotation.RabbitListener; 进口org.springframework.stereotype.Component; @ component @RabbitListener(队列=癴anout.A") 公开课FanoutReceiverA { @RabbitHandler 公共空间过程(字符串消息){ System.out.println(“扇出接收机:“;+消息); } }
FanoutReceiverB。java类:
包com.example.rabbitmqfanout.rabbitmq; 进口org.springframework.amqp.rabbit.annotation.RabbitHandler; 进口org.springframework.amqp.rabbit.annotation.RabbitListener; 进口org.springframework.stereotype.Component; @ component @RabbitListener(队列=癴anout.B") 公开课FanoutReceiverB { @RabbitHandler 公共空间过程(字符串消息){ System.out.println(扇出接收机B:“;+消息); } }
FanoutReceiverC。java类:
包com.example.rabbitmqfanout.rabbitmq; 进口org.springframework.amqp.rabbit.annotation.RabbitHandler; 进口org.springframework.amqp.rabbit.annotation.RabbitListener; 进口org.springframework.stereotype.Component; @ component @RabbitListener(队列=癴anout.C") 公开课FanoutReceiverC { @RabbitHandler 公共空间过程(字符串消息){ System.out.println(扇出接收机C:“;+消息); } }
4)。测试
展开。java类:
包com.example.rabbitmqfanout.rabbitmq; 进口org.junit.Test; 进口org.junit.runner.RunWith; 进口org.springframework.beans.factory.annotation.Autowired; 进口org.springframework.boot.test.context.SpringBootTest; 进口org.springframework.test.context.junit4.SpringRunner; @RunWith (SpringRunner.class) @SpringBootTest 公开课分列{ @ autowired 私人FanoutSender发送者; @Test 公共空间fanoutSender()抛出异常{ sender.send (); } }弹簧引导如何实现对RabbitMQ整合