RabbitMQ中的Routing Key是什么?它的作用是什么?

简介: RabbitMQ中的Routing Key是什么?它的作用是什么?

RabbitMQ中的Routing Key是什么?它的作用是什么?

RabbitMQ中的Routing Key(路由键)是用于将消息路由到指定队列的关键字。它是在消息发布时与消息一起发送的一个属性。Routing Key的作用是根据一定的规则将消息发送到匹配的队列中。

在RabbitMQ中,Exchange(交换机)负责接收来自生产者的消息,并根据Routing Key将消息路由到一个或多个队列中。Exchange与队列之间的绑定关系是通过Binding Key(绑定键)来确定的。当生产者发送消息时,需要指定一个Routing Key,Exchange根据Routing Key将消息发送到与之匹配的队列中。

下面是一个使用Java编写的代码案例,演示了如何使用Routing Key将消息发送到指定的队列:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class RoutingKeyExample {
    private final static String EXCHANGE_NAME = "my_exchange";
    private final static String QUEUE_NAME_1 = "my_queue_1";
    private final static String QUEUE_NAME_2 = "my_queue_2";
    private final static String ROUTING_KEY_1 = "key1";
    private final static String ROUTING_KEY_2 = "key2";
    public static void main(String[] args) throws IOException, TimeoutException {
        // 创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        // 创建连接
        Connection connection = factory.newConnection();
        // 创建通道
        Channel channel = connection.createChannel();
        // 声明交换机
        channel.exchangeDeclare(EXCHANGE_NAME, "direct");
        // 声明队列1
        channel.queueDeclare(QUEUE_NAME_1, true, false, false, null);
        // 声明队列2
        channel.queueDeclare(QUEUE_NAME_2, true, false, false, null);
        // 绑定队列1到交换机,并指定Routing Key为key1
        channel.queueBind(QUEUE_NAME_1, EXCHANGE_NAME, ROUTING_KEY_1);
        // 绑定队列2到交换机,并指定Routing Key为key2
        channel.queueBind(QUEUE_NAME_2, EXCHANGE_NAME, ROUTING_KEY_2);
        // 发送消息到交换机,并指定Routing Key为key1
        String message1 = "Hello, RabbitMQ! (Routing Key: key1)";
        channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY_1, null, message1.getBytes());
        System.out.println("Sent message: " + message1);
        // 发送消息到交换机,并指定Routing Key为key2
        String message2 = "Hello, RabbitMQ! (Routing Key: key2)";
        channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY_2, null, message2.getBytes());
        System.out.println("Sent message: " + message2);
        // 关闭通道和连接
        channel.close();
        connection.close();
    }
}

在上面的代码中,首先我们创建了一个连接工厂,并设置RabbitMQ服务器的主机地址。然后,我们使用连接工厂创建了一个连接,并使用连接创建了一个通道。接下来,我们声明了一个名为"my_exchange"的交换机,并设置交换机的类型为"direct",表示使用Routing Key进行消息路由。然后,我们声明了两个队列,分别是"my_queue_1"和"my_queue_2"。接着,我们使用queueBind方法将队列1绑定到交换机,并指定Routing Key为"key1",将队列2绑定到交换机,并指定Routing Key为"key2"。最后,我们使用basicPublish方法发送两条消息到交换机,分别指定Routing Key为"key1"和"key2"。

如果大家觉得有用的话,可以关注我下面的微信公众号,极客李华,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历等内容,让大家更好学习编程,我的抖音,B站也叫极客李华。大家喜欢也可以关注一下

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件
使用rabbitmq遇到的routing key问题
结论: 死信交换机绑定的普通队列和它绑定的死信队列的routing key应该相同
125 0
ly~
|
2月前
|
消息中间件 搜索推荐 大数据
一般情况下在 RocketMQ 中添加 access key 的步骤: 一、确定配置文件位置 RocketMQ 的配置文件通常位于安装目录下的 conf 文件夹中。你需要找到 broker.conf 或相关的配置文件。 二、编辑配置文件 打开配置文件,查找与 ACL(访问控制列表)相关的配置部分。 在配置文件中添加以下内容:
大数据广泛应用于商业、金融、医疗和政府等多个领域。在商业上,它支持精准营销、客户细分及流失预测,并优化供应链管理;金融领域则利用大数据进行风险评估、市场预测及欺诈检测;医疗行业通过大数据预测疾病、提供个性化治疗;政府运用大数据进行城市规划和公共安全管理;工业领域则借助大数据进行设备维护、故障预测及质量控制。
ly~
102 2
|
消息中间件 存储
【RabbitMQ五】——RabbitMQ路由模式(Routing)
【RabbitMQ五】——RabbitMQ路由模式(Routing)
335 0
|
消息中间件 数据库
RabbitMQ工作模式4 Routing路由模式
RabbitMQ工作模式4 Routing路由模式
175 0
RabbitMQ工作模式4 Routing路由模式
|
消息中间件
RabbitMQ02_简单模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics通配符模式、Work模式-轮询、公平(六)
RabbitMQ02_简单模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics通配符模式、Work模式-轮询、公平(六)
145 0
RabbitMQ02_简单模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics通配符模式、Work模式-轮询、公平(六)
RabbitMQ02_简单模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics通配符模式、Work模式-轮询、公平(三)
RabbitMQ02_简单模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics通配符模式、Work模式-轮询、公平(三)
147 0
RabbitMQ02_简单模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics通配符模式、Work模式-轮询、公平(三)
|
消息中间件 算法 Python
|
26天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
66 4
|
21天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。