rabbitmq实现向各服务广播消息

栏目: 后端 · 发布时间: 7年前

内容简介:主要是将一个消息,分发到绑定了它的队列上,而这些队列如生产者不需要关心消费者有多少,消费者如果需要这种消息,只需要把队列绑定到exchange上即可生产者

广播fanout

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

对生产者是解耦的

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

流程

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

例子

@Component
public class AmqpConfig {
  public static final String LIND_FANOUT_EXCHANGE = "lindFanoutExchange";

 /**
   * 广播交换机.
   *
   * @return
   */
  @Bean
  public FanoutExchange fanoutExchange() {
    return new FanoutExchange(LIND_FANOUT_EXCHANGE);
  }
}

生产者

/**
   * 发布广播消息.
   *
   * @param message .
   */
  public void fanoutPublish(String message) {
    try {
      rabbitTemplate.convertAndSend(AmqpConfig.LIND_FANOUT_EXCHANGE, null, "广播消息");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

消费者

@Component
public class FanoutSubscriber {

  @Autowired
  AmqpConfig amqpConfig;

  @Bean
  public Queue product1Queue() {
    return new Queue("product1.queue");
  }

  @Bean
  public Queue product2Queue() {
    return new Queue("product2.queue");
  }

  @Bean
  public Binding product1QueueBinding() {
    return BindingBuilder.bind(product1Queue()).to(amqpConfig.fanoutExchange());
  }

  @Bean
  public Binding product2QueueBinding() {
    return BindingBuilder.bind(product2Queue()).to(amqpConfig.fanoutExchange());
  }

  @RabbitListener(queues = "product1.queue")
  public void product1(String data) {
    System.out.println(data);
  }

  @RabbitListener(queues = "product2.queue")
  public void product2(String data) {
    System.out.println(data);
  }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网金融手册

互联网金融手册

谢平、邹传伟、刘海二 / 中国人民大学出版社 / 2014-4-1 / 68.00元

本书作者在2012年4月7日“金融四十人年会”上首次公开提出了“互联网金融”概念。在短短两年中,互联网金融已经成为中国金融界和IT界最热门的词汇之一,相关创业活动也非常活跃。本书是作者两年来深入研究、思考的结晶,畅想了金融与IT结合的未来图景,将理论与实践高度融合,与读者分享了许多深具洞察力的观点。本书力图规范互联网金融的定义,完善互联网金融的理论体系,分析互联网金融目前的六种主要类型——金融互联......一起来看看 《互联网金融手册》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试