MQ的发布订阅模式(fanout)| RabbitMQ系列(七)

这是我参与8月更文应战的第12天,活动概略检查:8月更文应战


相关文章

RabbitMQ系列汇总:RabbitMQ系列


前语

  • 回忆一下简略办法和作业办法

    • 简略办法:一个出产者对应一个顾客。
    • 作业办法:一个出产者对应多个顾客。
  • 现在来介绍一下交流机是干嘛的

  • RabbitMQ 音讯传递模型的中心思想是: 出产者出产的音讯从不会直接发送到部队。实际上,一般出产 者甚至都不知道这些音讯传递传递到了交流哪些部队中。

  • 相反,出产者只能将音讯发送到交流机(exchange),交流机作业的内容十分简略,一方面它接收来 自出产者的音讯,另一方面将它们推入部队。交流机有必要得当知道怎样处理收到的音讯。

  • 是应该把这些消 息放到特定部队仍是说把他们到许多部队中仍是交流技巧说应该丢掉它们。这就的由交流机的类型来决议。

  • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)

  • 交流机共有四种类型

    • 直接(direct)
    • 主题(topic)
    • 标题(headers)
    • 扇出(fanout)
    • 一般MQ会帮咱们创立一些默许的交流机,能够直接拿来运用,也能够自己创立不同类型的交流机
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
  • 这儿需要讲下无名交流交流的重要性机,也便是默许交流机,先交流作文前的几篇文章交流才能咱们都没有指定交流机

    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
    • 第一个参数是交流机的称谓。空字符串标明默许或无称谓交流机:音讯能路由发送到部队中其实 是由 routingKey(b交流的重要性的名言indingkey)绑定 key 指定的,假如它存在的话。
    • 那么这种情况下,MQ会走默许的交流机(AMQP default)
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
  • 还有东西叫暂时部队

    • //创立暂时部队
      String queueName = channel.queueDec交流的三要素是什么lare().getQueue();
      
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
    • 交流的重要性心得体会接履行必定报错的:明显奉告咱们部队名不要用交流作文amq来命名,所以能够将代码稍微改造下
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
    • channel.queueDeclare("dy"+queueName,false,false,false,nu交流的重要性心得体会ll);
      
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
  • 了解了交流机之后,咱们就能够正式交流的三要素是什么开端发布订阅办法啦~

一、出产交流的重要性心得体会

  • 尽量在出产者指定交流机,毕竟依照正常逻辑来看,必定是先发送,才华承受。否则的话承受了个孤寂哦~

  •   public static void publishMessageIndividually() throws Exception {
       //东西类获取通道
       Channel channel = RabbitMqUtils.getChannel();
       /**
        * 指定交流才能交流机和办法
        * 参数一:指定的交流机称谓
        * 参数二:指定的交流机办法
        */
       channel.exchangeDeclare(ChangeNameCons交流的艺术tant.FANOUT_MODEL,"fanout");
    ​
       Scann交流的重要性的名言er sc = new Scanner(System.in);
       System.交流的艺术out.println("请输入信息");
       while (sc.hasNext()) {
         String message = sc.nextLine();
         channel.b交流技巧asicPublish(ChangeNameConstant.FANOUT_MODEL, "20210804", null, message.getBytes("UTF-8"));交流的重要性
         System.out.println("出产者宣告音讯" + message);
        }
      }
    
  • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)

  • 由此可见

    • 创立了一个出产者
    • 建立了一个交流机Name= f交流才能anout_patt交流的三要素是什么ern交流的重要性心得体会
    • 交流机的类型是 fanout(扇型)

二、顾客

  • 顾客A

  • /交流**
    * 这是一个测验的顾客
    *@author DingYongJun
    *@date 2021/8/1
    */
    public class DyConsumerTe交流的重要性心得体会s交流的重要性心得体会t_Fanout01 {
    ​
     public stat交流ic void main(String[] args) throws Exce交流的艺术ption{
       //运用东西类来创立通道
       Channel channel = RabbitMqUtils.getChannel();
    ​交流的重要性心得体会
       /**
        * 生成一个暂时的部队 部队的称谓是随机的
        * 当顾客断开和该部队的联接时 部队主动删去
        */
       Str交流的三要素是什么ing queueName = channel.queueDeclare().getQueu交流技巧许医生攻略版电视剧e();
       //把该暂时部队绑定咱们的 exchange 其间 routingkey(也称之为 binding key)为空字符串
       channel.queueBind(queueName, ChangeNam交流作文eConstant.FANOUT_MODEL, "20210804");
       System.out.println("交流机A等候接收音讯,把接收到的音讯打印在屏幕.....");
       DeliverCallback deliverCallback = (consumerTag, delivery) -> {
         String m交流的重要性essage = new String(delivery.getBody(), "UTF-8")交流技巧许医生攻略版电视剧;
         System.out.println("控制交流的重要性心得体会台打印接收到的音讯"+message);
        };
       channel.basicConsume(queueName, true, deliverCall交流技巧和办法back,交流作文 co交流作文nsumerTag -> {
         System.out.println("音讯中断了~");
        });
      }交流的重要性心得体会
    }
    
  • 顾客B代码相同,只是改成顾客B等候交流承受音讯~

  • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)

  • 两个顾客的声交流的重要性的名言明的暂时部队成功绑定到了交流机上!

  • 履行效果

    • 出产者
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
    • 顾客A
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
    • 顾客B
    • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
  • 出产者给交流机发了交流技巧许医生攻略版电视剧一条音讯。

  • 两个顾客都收到了音讯。

三、总结

  • MQ的发布订阅形式(fanout)| RabbitMQ系列(七)
  • 很明显,这个地方咱们不会将音讯直接发到部队了
  • 而是将音讯发送给交流机
  • 交流机交流的重要性寻找哪些部队绑定了本交流机
  • 然后将音讯发送至全部被绑定的部队
  • 毕竟队交流技巧和办法伍发送音讯给顾客

路漫漫其修远兮,吾必将上下求索~

假如你以为i博主写的不错!写作不易,请点赞、关注、谈论给博主一个鼓舞吧~hahah

发表评论

提供最优质的资源集合

立即查看 了解详情