ToB企服应用市场:ToB评测及商务社交产业平台

标题: RabbitMQ中的Routing Key是什么?它的作用是什么? [打印本页]

作者: 麻花痒    时间: 2024-7-11 20:36
标题: 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将消息发送到指定的队列:
  1. import com.rabbitmq.client.Channel;
  2. import com.rabbitmq.client.Connection;
  3. import com.rabbitmq.client.ConnectionFactory;
  4. import java.io.IOException;
  5. import java.util.concurrent.TimeoutException;
  6. public class RoutingKeyExample {
  7.     private final static String EXCHANGE_NAME = "my_exchange";
  8.     private final static String QUEUE_NAME_1 = "my_queue_1";
  9.     private final static String QUEUE_NAME_2 = "my_queue_2";
  10.     private final static String ROUTING_KEY_1 = "key1";
  11.     private final static String ROUTING_KEY_2 = "key2";
  12.     public static void main(String[] args) throws IOException, TimeoutException {
  13.         // 创建连接工厂
  14.         ConnectionFactory factory = new ConnectionFactory();
  15.         factory.setHost("localhost");
  16.         // 创建连接
  17.         Connection connection = factory.newConnection();
  18.         // 创建通道
  19.         Channel channel = connection.createChannel();
  20.         // 声明交换机
  21.         channel.exchangeDeclare(EXCHANGE_NAME, "direct");
  22.         // 声明队列1
  23.         channel.queueDeclare(QUEUE_NAME_1, true, false, false, null);
  24.         // 声明队列2
  25.         channel.queueDeclare(QUEUE_NAME_2, true, false, false, null);
  26.         // 绑定队列1到交换机,并指定Routing Key为key1
  27.         channel.queueBind(QUEUE_NAME_1, EXCHANGE_NAME, ROUTING_KEY_1);
  28.         // 绑定队列2到交换机,并指定Routing Key为key2
  29.         channel.queueBind(QUEUE_NAME_2, EXCHANGE_NAME, ROUTING_KEY_2);
  30.         // 发送消息到交换机,并指定Routing Key为key1
  31.         String message1 = "Hello, RabbitMQ! (Routing Key: key1)";
  32.         channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY_1, null, message1.getBytes());
  33.         System.out.println("Sent message: " + message1);
  34.         // 发送消息到交换机,并指定Routing Key为key2
  35.         String message2 = "Hello, RabbitMQ! (Routing Key: key2)";
  36.         channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY_2, null, message2.getBytes());
  37.         System.out.println("Sent message: " + message2);
  38.         // 关闭通道和连接
  39.         channel.close();
  40.         connection.close();
  41.     }
  42. }
复制代码
在上面的代码中,首先我们创建了一个连接工厂,并设置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站也叫极客李华。大家喜欢也可以关注一下

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4