当前位置:   article > 正文

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

routingkey

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();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

在上面的代码中,首先我们创建了一个连接工厂,并设置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站也叫极客李华。大家喜欢也可以关注一下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/284178
推荐阅读
相关标签
  

闽ICP备14008679号