经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
rabbitmq实现向各服务广播消息
来源:cnblogs  作者:张占岭  时间:2018/11/20 10:41:48  对本文有异议

广播fanout

主要是将一个消息,分发到绑定了它的队列上,而这些队列如消费者自己去建立和绑定!

对生产者是解耦的

生产者不需要关心消费者有多少,消费者如果需要这种消息,只需要把队列绑定到exchange上即可

流程

  1. 打开rabbitmq的ui
  2. 建立两个队列fanout1,fanout2
  3. 打开exchange里的amqp.fanout类型
  4. 绑定上面的两个队列
  5. 向exchange里发消息
  6. 回到队列页面,这时可以看到每个队列都收到了消息

例子

  1. @Component
  2. public class AmqpConfig {
  3. public static final String LIND_FANOUT_EXCHANGE = "lindFanoutExchange";
  4. /**
  5. * 广播交换机.
  6. *
  7. * @return
  8. */
  9. @Bean
  10. public FanoutExchange fanoutExchange() {
  11. return new FanoutExchange(LIND_FANOUT_EXCHANGE);
  12. }
  13. }

生产者

  1. /**
  2. * 发布广播消息.
  3. *
  4. * @param message .
  5. */
  6. public void fanoutPublish(String message) {
  7. try {
  8. rabbitTemplate.convertAndSend(AmqpConfig.LIND_FANOUT_EXCHANGE, null, "广播消息");
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }
  12. }

消费者

  1. @Component
  2. public class FanoutSubscriber {
  3. @Autowired
  4. AmqpConfig amqpConfig;
  5. @Bean
  6. public Queue product1Queue() {
  7. return new Queue("product1.queue");
  8. }
  9. @Bean
  10. public Queue product2Queue() {
  11. return new Queue("product2.queue");
  12. }
  13. @Bean
  14. public Binding product1QueueBinding() {
  15. return BindingBuilder.bind(product1Queue()).to(amqpConfig.fanoutExchange());
  16. }
  17. @Bean
  18. public Binding product2QueueBinding() {
  19. return BindingBuilder.bind(product2Queue()).to(amqpConfig.fanoutExchange());
  20. }
  21. @RabbitListener(queues = "product1.queue")
  22. public void product1(String data) {
  23. System.out.println(data);
  24. }
  25. @RabbitListener(queues = "product2.queue")
  26. public void product2(String data) {
  27. System.out.println(data);
  28. }
  29. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号