国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RabbitMQ五大常用工作模式

這篇具有很好參考價值的文章主要介紹了RabbitMQ五大常用工作模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.簡單隊列

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

  • 消息生產者

    public class Send {
        private static final String QUEUE_NAME = "hello";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            try (Connection connection = factory.newConnection();
                 Channel channel = connection.createChannel()) {
                // 聲明隊列
                channel.queueDeclare(QUEUE_NAME, false, false, false, null);
                String message = "這是一條消息!??!";
                // 發(fā)送消息
                channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
                System.out.println("Send:" + message);
            }
        }
    }
    
  • 消息消費者(會一直監(jiān)聽隊列)

    public class Recv {
        private static final String QUEUE_NAME = "hello";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 聲明隊列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv:" + message);
            };
            // 自動確認消息
            channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
            });
        }
    }
    

2.工作隊列

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

  • 工作隊列

    • 消息生產能力大于消費能力,增加多個消費節(jié)點
    • 和簡單隊列類似,增加多個消費節(jié)點,處于競爭關系
    • 默認策略:round robin輪訓
  • 生產者

    public class Send {
    
        private static final String QUEUE_NAME = "work_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            try (Connection connection = factory.newConnection();
                 Channel channel = connection.createChannel()) {
                // 聲明隊列
                channel.queueDeclare(QUEUE_NAME, false, false, false, null);
                // 批量發(fā)送10個消息
                for (int i = 0; i < 10; i++) {
                    String message = "這是一條消息?。?!" + i;
                    // 發(fā)送消息
                    channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
                    System.out.println("Send:" + message);
    
                }
            }
        }
    }
    
  • 消費者1

    public class Recv1 {
        private static final String QUEUE_NAME = "work_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 聲明隊列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                // 模擬消費者緩慢
                try {
                    TimeUnit.SECONDS.sleep(3);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv1:" + message);
                // 手工確認消息
                channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
            };
            // 關閉自動確認消息
            channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> {
            });
        }
    }
    
  • 消費者2

    public class Recv2 {
        private static final String QUEUE_NAME = "work_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 聲明隊列
            channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                // 模擬消費者緩慢
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv2:" + message);
                // 手工確認消息
                channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
            };
            // 關閉自動確認消息
            channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> {
            });
        }
    }
    
  • 輪訓策略驗證

    • 先啟動兩個消費者,再啟動生產者
    • 缺點:存在部分節(jié)點消費過快,部分節(jié)點消費慢,導致不能合理處理消息
  • 公平策略驗證

    • 修改消費者策略
    • 解決消費者能力消費不足的問題,降低消費時間問題

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

3.RabbitMQ的Exchange交換機

  • 生產者將消息發(fā)送到Exchange,交換機將消息路由到一個或者多個隊列中,交換機有多個類型,隊列和交換機是多對多的關系
  • 交換機只負責轉發(fā)消息,不具備存儲消息的能力,如果沒有隊列和交換機綁定或者沒有符合的路由規(guī)則,則消息會被丟失
  • RabbitMQ有四種交換機類型,分別是Direct exchange、Fanout exchange、Topic exchange、Headers exchange,最后一種基本不用

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

  • 交換機類型
    • Direct exchange定向
      • 將一個隊列綁定到交換機上,要求該消息與一個特定的路由鍵完全匹配
      • 處理路由鍵
    • Fanout exchange廣播
      • 只需要簡單的將隊列綁定到交換機上,一個發(fā)送到交換機的消息都會被轉發(fā)到與該交換機綁定的所有隊列上。很像子網廣播,每臺子網內的主機都獲得了一份復制的消息
      • Fanout交換機轉發(fā)消息是最快的,用于發(fā)布訂閱廣播形式
      • 不處理路由鍵
    • Topic exchange通配符
      • 主題交換機是一種發(fā)布/訂閱的模式,結合了直連交換機與扇形交換機的特點
      • 將路由鍵和某模式進行匹配,此時隊列需要綁定在一個模式上
      • 符號"#“匹配一個或多個詞,符號”*"匹配不多不少一個詞
    • Headers exchange(很少用)
      • 根據發(fā)送的消息內容中的headers屬性進行匹配,在綁定Queue與Exchange時指定一組鍵值對
      • 當消息發(fā)送到RabbitMQ時會取到該消息的headers與Exchange綁定時指定的鍵值對進行匹配
      • 如果完全匹配則消息會路由到該隊列,否則不會路由到該隊列
      • 不處理路由鍵

4.發(fā)布訂閱模型

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

  • 什么是RabbitMQ的發(fā)布訂閱模式

    • 發(fā)布訂閱模型中,消息生產者不再是直接面對隊列,而是直面交換機,都需要經過交換機來進行消息的發(fā)送,所有發(fā)往同一個fanout交換機的消息都會被所有監(jiān)聽這個交換機的消費者接收
    • 發(fā)布訂閱模型引入fanout交換機
  • 發(fā)布訂閱模型應用場景

    • 微信公眾號
    • 新浪微博關注
  • RabbitMQ發(fā)布訂閱模型

    • 通過把消息發(fā)送給交換機,交換機轉發(fā)給對應綁定的隊列
    • 交換機綁定的隊列是排他獨占隊列,自動刪除
  • 發(fā)送端

    public class Send {
    
        private static final String EXCHANGE_NAME = "fan_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            try (Connection connection = factory.newConnection();
                 Channel channel = connection.createChannel()) {
                // 綁定交換機,廣播類型
                channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT);
                String message = "廣播發(fā)送消息:這是一條消息?。?!";
                // 發(fā)送消息
                channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes(StandardCharsets.UTF_8));
                System.out.println("Send:" + message);
            }
        }
    }
    
  • 消費端(兩個節(jié)點)

    public class Recv1 {
        private static final String EXCHANGE_NAME = "fan_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 綁定交換機,廣播類型
            channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.FANOUT);
            // 獲取隊列(排它隊列)
            String queueName = channel.queueDeclare().getQueue();
            // 綁定隊列和交換機
            channel.queueBind(queueName, EXCHANGE_NAME, "");
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv1:" + message);
            };
            // 自動確認消息
            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
            });
        }
    }
    

5.路由模式

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

  • 什么是RabbitMQ的路由模式

    • 交換機類型是direct

    • 隊列和交換機綁定,需要指定一個路由鍵(也叫binding key)

    • 消息生產者發(fā)送消息給交換機,需要指定路由鍵

    • 交換機根據消息的路由鍵,轉發(fā)給對應的隊列

  • 消息生產者

    public class Send {
    
        private static final String EXCHANGE_NAME = "direct_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            try (Connection connection = factory.newConnection();
                 Channel channel = connection.createChannel()) {
                // 綁定交換機,直連類型
                channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
                String error = "我是錯誤日志";
                String info = "我是info日志";
                String warning = "我是warning日志";
                // 發(fā)送消息
                channel.basicPublish(EXCHANGE_NAME, "error", null, error.getBytes(StandardCharsets.UTF_8));
                channel.basicPublish(EXCHANGE_NAME, "info", null, info.getBytes(StandardCharsets.UTF_8));
                channel.basicPublish(EXCHANGE_NAME, "warning", null, warning.getBytes(StandardCharsets.UTF_8));
                System.out.println("Send:消息發(fā)送成功!");
            }
        }
    }
    
  • 消費者一(只接收錯誤消息)

    public class Recv1 {
        private static final String EXCHANGE_NAME = "direct_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 綁定交換機,直連類型
            channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
            // 獲取隊列
            String queueName = channel.queueDeclare().getQueue();
            // 綁定隊列和交換機
            channel.queueBind(queueName, EXCHANGE_NAME, "error");
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv1:" + message);
            };
            // 自動確認消息
            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
            });
        }
    }
    
  • 消費者二(接收全部消息)

    public class Recv2 {
        private static final String EXCHANGE_NAME = "direct_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 綁定交換機,直連類型
            channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.DIRECT);
            // 獲取隊列
            String queueName = channel.queueDeclare().getQueue();
            // 綁定隊列和交換機
            channel.queueBind(queueName, EXCHANGE_NAME, "error");
            channel.queueBind(queueName, EXCHANGE_NAME, "info");
            channel.queueBind(queueName, EXCHANGE_NAME, "warning");
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv2:" + message);
            };
            // 自動確認消息
            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
            });
        }
    }
    

6.主題通配符模式

RabbitMQ五大常用工作模式,RabbitMQ,rabbitmq

  • 什么是RabbitMQ的主題模式

    • 交換機是topic,可以實現發(fā)布訂閱模式fanout和路由模式direct的功能,更加靈活,支持通配符匹配
    • 交換機通過通配符進行轉發(fā)到對應的隊列,*代表一個詞,#代表1個或多個詞,一般用#作為通配符居多,詞與詞之間使用.點進行分割
    • 注意:交換機和隊列綁定時用的binding使用通配符的路由鍵;生產者發(fā)送消息時需要使用具體的路由鍵
  • 生產者

    public class Send {
    
        private static final String EXCHANGE_NAME = "topic_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            try (Connection connection = factory.newConnection();
                 Channel channel = connection.createChannel()) {
                // 綁定交換機,主題類型
                channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);
                String error = "我是錯誤日志";
                String info = "我是info日志";
                String warning = "我是warning日志";
                // 發(fā)送消息
                channel.basicPublish(EXCHANGE_NAME, "error", null, error.getBytes(StandardCharsets.UTF_8));
                channel.basicPublish(EXCHANGE_NAME, "info", null, info.getBytes(StandardCharsets.UTF_8));
                channel.basicPublish(EXCHANGE_NAME, "warning", null, warning.getBytes(StandardCharsets.UTF_8));
                System.out.println("Send:消息發(fā)送成功!");
            }
        }
    }
    
  • 消費者一(只接收錯誤消息)

    public class Recv1 {
        private static final String EXCHANGE_NAME = "topic_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 綁定交換機,主題類型
            channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);
            // 獲取隊列
            String queueName = channel.queueDeclare().getQueue();
            // 綁定隊列和交換機
            channel.queueBind(queueName, EXCHANGE_NAME, "error");
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv1:" + message);
            };
            // 自動確認消息
            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
            });
        }
    }
    
  • 消費者二(接收全部消息)

    public class Recv2 {
        private static final String EXCHANGE_NAME = "topic_mq";
    
        public static void main(String[] args) throws Exception {
            // 連接工廠
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("192.168.101.128");
            factory.setPort(5672);
            factory.setUsername("admin");
            factory.setPassword("Gen123");
            factory.setVirtualHost("/");
    
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
            // 綁定交換機,主題類型
            channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);
            // 獲取隊列
            String queueName = channel.queueDeclare().getQueue();
            // 綁定隊列和交換機
            channel.queueBind(queueName, EXCHANGE_NAME, "#");
            // 回調
            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
                String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
                System.out.println("Recv2:" + message);
            };
            // 自動確認消息
            channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {
            });
        }
    }
    

7.工作模式總結

  • 簡單模式

    • 一個生產者一個消費者,不用指定交換機,使用默認交換機
  • 工作隊列模式

    • 一個生產者多個消費者,可以有輪訓和公平策略,不用指定交換機,使用默認交換機
  • 發(fā)布訂閱模式

    • fanout類型交換機,通過交換機和隊列綁定,不用指定綁定路由鍵,生產者發(fā)送消息到交換機,fanout交換機直接進行轉發(fā),消息不用指定routingkey路由鍵
  • 路由模式

    • direct類型交換機,通過交換機和隊列綁定,指定綁定的路由鍵,生產者發(fā)送消息到交換機,交換機根據消息的路由key進行轉發(fā)到對應的隊列,消息要指定routingkey路由鍵
  • 通配符模式文章來源地址http://www.zghlxwxcb.cn/news/detail-825773.html

    • topic交換機,通過交換機和隊列綁定,指定綁定的通配符路由鍵,生產者發(fā)送消息到交換機,交換機根據消息的路由鍵進行轉發(fā)到對應的隊列,消息要指定routingkey路由鍵

到了這里,關于RabbitMQ五大常用工作模式的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • RabbitMQ工作模式-路由模式

    RabbitMQ工作模式-路由模式

    官方文檔參考:https://www.rabbitmq.com/tutorials/tutorial-four-python.html 使用 direct 類型的Exchange,發(fā)N條消息并使用不同的routingKey,消費者定義隊列并將隊列 routingKey 、Exchange綁定。此時使用 direct 模式Exchange必須要 routingKey 完成匹配的情況下消息才會轉發(fā)到對應的隊列中被消費。 樣例使用

    2024年02月10日
    瀏覽(21)
  • RabbitMQ:工作隊列模式

    RabbitMQ:工作隊列模式

    ??個人主頁:不斷前進的皮卡丘 ??博客描述:夢想也許遙不可及,但重要的是追夢的過程,用博客記錄自己的成長,記錄自己一步一步向上攀登的印記 ??個人專欄:消息中間件 工作隊列(又名: 任務隊列 )背后的主要思想是避免立即執(zhí)行資源密集型任務并等待其完成。相反

    2024年01月23日
    瀏覽(26)
  • RabbitMQ 工作模式介紹

    RabbitMQ 工作模式介紹

    RabbitMQ 是一個消息代理:它接受并轉發(fā)消息。您可以將其視為郵局:當您將要郵寄的郵件放入郵箱時,您可以確定信使最終會將郵件交付給您的收件人。在這個類比中,RabbitMQ是一個郵政信箱,一個郵局和一個信件載體。 RabbitMQ 和郵局之間的主要區(qū)別在于它不處理紙張,而是

    2024年02月06日
    瀏覽(55)
  • RabbitMQ的工作模式

    RabbitMQ 的工作模式 一 .simple 模式(即最簡單的收發(fā)模式) 二 .work 工作模式 ( 資源的競爭 ) publish_subscribe 發(fā)布訂閱 (../../../../../0 馬士兵 / 新建文件夾 /BAT 面試突擊資料 (1)/ 整理 /BAT 面試突擊資料 /15- 消息中間件 MQ 面試題( 2020 最新 版) .assets/publish_subscribe 發(fā)布訂閱 ( 共享資

    2024年02月06日
    瀏覽(14)
  • 消息隊列之RabbitMQ工作模式

    提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 消息隊列之RabbitMQ工作模式 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內容: 在這篇博客中,我將深入探討 RabbitMQ 的工作模式,帶你

    2024年01月18日
    瀏覽(114)
  • RabbitMQ消息隊列的工作模式

    官方文檔地址:https://www.rabbitmq.com/getstarted.html 工作模式其實就是消息隊列分發(fā)消息的路由方式。 RabbitMQ常用的幾種工作模式: 簡單模式 WorkQueues工作隊列模式 PubSub生產者/PubSub消費者模式 Routing路由模式 Topics通配符模式 發(fā)布/訂閱模式(Publish/Subscribe):該模式用于一對多的

    2024年02月15日
    瀏覽(26)
  • RabbitMQ的6種工作模式

    RabbitMQ的6種工作模式

    官方文檔: http://www.rabbitmq.com/ https://www.rabbitmq.com/getstarted.html RabbitMQ 常見的 6 種工作模式: 1)、消息產生后將消息放入隊列。 2)、消息的消費者監(jiān)聽消息隊列,如果隊列中有消息,就消費掉,消息被拿走后,自動從隊列中刪除。 3)、存在的問題:消息可能沒有被消費者正確處

    2024年02月14日
    瀏覽(12)
  • RabbitMQ的5種模式——再探RabbitMQ的模式,簡單、工作,發(fā)布訂閱(廣播),路由、主題 & 頁面分析

    RabbitMQ的5種模式——再探RabbitMQ的模式,簡單、工作,發(fā)布訂閱(廣播),路由、主題 & 頁面分析

    RabbitMQ作為一款常用的消息中間件,在微服務項目中得到大量應用,其本身是微服務中的重點和難點,有不少概念我自己的也是一知半解,本系列博客嘗試結合實際應用場景闡述RabbitMQ的應用,分析其為什么使用,并給出怎么用的案例。 本篇博客結合場景來闡述RabbitMQ的幾種模

    2024年02月07日
    瀏覽(25)
  • 消息隊列——rabbitmq的不同工作模式

    消息隊列——rabbitmq的不同工作模式

    目錄 Work queues 工作隊列模式 ?Pub/Sub 訂閱模式 Routing路由模式 Topics通配符模式? ?工作模式總結 C1和C2屬于競爭關系,一個消息只有一個消費者可以取到。 ?代碼部分只需要用兩個消費者進程監(jiān)聽同一個隊里即可。 兩個消費者呈現競爭關系。 用一個生產者推送10條消息 兩個監(jiān)

    2024年02月16日
    瀏覽(27)
  • RabbitMQ Exchange類型和工作模式介紹

    RabbitMQ Exchange類型和工作模式介紹

    RabbitMQ常用的交換器類型有: fanout、 direct、 topic、 headers四種。 會把所有發(fā)送到該交換器的消息路由到所有與該交換器綁定的隊列中 如圖: direct類型的交換器路由規(guī)則很簡單,它會把消息路由到那些BindingKey和RoutingKey完全匹配的 隊列中 ,如下圖: topic類型的交換器在direc

    2024年02月11日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包