關於rabbitMQ的bindingKey和routingKey理解


package utils;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;

public class test {

    public void sendMqMessage() {

        String message = "學生班級和姓名"; // 消息內容
        String queueName="man"; // 隊列名字,例如李家隊
        String routingKey = "class.sex" ;// 消息的路由鍵,例如一班.李四
         String bindingKey = "*.李*"; // 隊列綁定的接收規則, 列如只收李姓
        //創建連接工廠
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost(Constant.MQ_HOST);
        factory.setPort(Constant.MQ_PORT);
        factory.setUsername(Constant.MQ_USER);
        factory.setPassword(Constant.MQ_PWD);
        try {
            //創建連接
            Connection conn = factory.newConnection();
            //創建信道
            Channel channel = conn.createChannel();
            //聲明路由
            String exchange = "amq.topic";
            channel.exchangeDeclare(exchange, "topic", true);
            // ----創建隊列並設置信息---- start
            //聲明隊列
            channel.queueDeclare(queueName, true, false, false, null);
            //隊列綁定路由
            channel.queueBind(queueName, exchange, bindingKey);
            // ----創建隊列並設置信息---- end

            // ----信息推送生產者---- start
            //使用消息確認confirm模式
            channel.confirmSelect();
            //發布消息
            channel.basicPublish(exchange, routingKey, null, message.getBytes());
            // 等待消息確認到達MQ
            if (channel.waitForConfirms()) {
                System.out.println("----send success:" + routingKey);
            }
            // ----信息推送生產者---- end
            //關閉
            channel.close();
            conn.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

Topic交換器按照正則表達式模糊匹配:用消息的Routing Key和Binding Key進行模糊匹配,如果匹配成功,將消息分發到該Queue。Binding Key中可以存在兩種特殊字符“ * ”與“#”,用於做模糊匹配,其中“*”用於匹配一個單詞,“#”用於匹配零、一個或多個單詞;Routing Key中特殊字符沒有特殊含義,例如:usa.*中 “*” 只是一個*沒有特殊含義,不是正則表達式。
Binding Key與Routing Key是一個句點號 “. ” 分隔的字符串,被句點號“. ”分隔開的每一段獨立的字符串稱為一個單詞

 

 原文鏈接:https://blog.csdn.net/weixin_43498985/article/details/119026198


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM