基于RabbitMQ几种Exchange模式详解-创新互联

AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。同理,消费者也是如此。Exchange 就类似于一个交换机,转发各个消息分发到相应的队列中。

成都创新互联公司:2013年至今为各行业开拓出企业自己的“网站建设”服务,为近千家公司企业提供了专业的做网站、网站设计、网页设计和网站推广服务, 专业公司由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。

RabbitMQ提供了四种Exchange模式:fanout,direct,topic,header 。 header模式在实际使用中较少,本文只对前三种模式进行比较。

一. Fanout Exchange

基于RabbitMQ几种Exchange 模式详解

所有发送到Fanout Exchange的消息都会被转发到与该Exchange 绑定(Binding)的所有Queue上。

Fanout Exchange 不需要处理RouteKey 。只需要简单的将队列绑定到exchange 上。这样发送到exchange的消息都会被转发到与该交换机绑定的所有队列上。类似子网广播,每台子网内的主机都获得了一份复制的消息。

所以,Fanout Exchange 转发消息是最快的。

     /// <summary>
  /// 生产者
  /// </summary>
  /// <param name="change"></param>
  private static void ProducerMessage(MyMessage msg)
  {
   var advancedBus = CreateAdvancedBus();

   if (advancedBus.IsConnected)
   {
    var exchange = advancedBus.ExchangeDeclare("user", ExchangeType.Fanout);

    advancedBus.Publish(exchange, "", false, new Message<MyMessage>(msg));
   }
   else
   {
    Console.WriteLine("Can't connect");
   }

  }

  /// <summary>
  /// 消费者
  /// </summary>
  private static void ConsumeMessage()
  {
   var advancedBus = CreateAdvancedBus();
   var exchange = advancedBus.ExchangeDeclare("user", ExchangeType.Fanout);

   var queue = advancedBus.QueueDeclare("user.notice.wangwu");
   advancedBus.Bind(exchange, queue, "user.notice.wangwu");
   advancedBus.Consume(queue, registration =>
   {
    registration.Add<MyMessage>((message, info) => { Console.WriteLine("Body: {0}", message.Body); });
   });
  }

名称栏目:基于RabbitMQ几种Exchange模式详解-创新互联
转载注明:https://www.cdcxhl.com/article12/ijedc.html

成都网站建设公司_创新互联,为您提供品牌网站建设微信小程序软件开发移动网站建设自适应网站外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司