RabbitMQ 路由模式(Routing Mode)详解

       RabbitMQ 是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP)。RabbitMQ 提供了多种消息传递模式,其中路由模式(Routing Mode)是一种重要的消息传递模式。在路由模式下,消息根据路由键(Routing Key)被发送到特定的队列中,实现消息的精确分发。

路由模式的关键概念

  1. 交换机(Exchange):交换机负责接收生产者发送的消息,并根据路由键将消息路由到一个或多个队列。
  2. 路由键(Routing Key):生产者发送消息时指定的一个标识符,交换机根据这个标识符来决定消息应该被发送到哪些队列。
  3. 队列(Queue):消费者订阅的队列,消息最终会被发送到这些队列中,等待消费者消费。
  4. 绑定(Binding):绑定定义了交换机和队列之间的关系,以及一个或多个路由键。绑定决定了哪些消息会被路由到哪些队列。

路由模式的工作流程

  1. 生产者发送消息:生产者将消息发送到交换机,并指定一个路由键。
  2. 交换机根据路由键路由消息:交换机根据路由键和绑定规则,将消息路由到一个或多个队列。
  3. 消费者从队列中获取消息:消费者订阅队列,并从队列中获取消息进行处理。

Java 代码示例

​ 下面是一个简单的 Java 示例,展示了如何使用 RabbitMQ 的路由模式。这个示例包括一个生产者、一个交换机、两个队列和两个消费者。

Maven 依赖

​ 首先,你需要在项目的 pom.xml 文件中添加 RabbitMQ 的依赖:

<dependency>  
    <groupId>com.rabbitmq</groupId>  
    <artifactId>amqp-client</artifactId>  
    <version>5.13.0</version>  
</dependency>

生产者代码

import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory;  
  
public class RoutingProducer {  
  
    private final static String EXCHANGE_NAME = "routing_exchange";  
  
    public static void main(String[] argv) throws Exception {  
        ConnectionFactory factory = new ConnectionFactory();  
        factory.setHost("localhost");  
        try (Connection connection = factory.newConnection();   
             Channel channel = connection.createChannel()) {  
              
            channel.exchangeDeclare(EXCHANGE_NAME, "direct");  
              
            String routingKey1 = "error";  
            String routingKey2 = "info";  
              
            String message1 = "This is an error message";  
            String message2 = "This is an info message";  
              
            channel.basicPublish(EXCHANGE_NAME, routingKey1, null, message1.getBytes());  
            System.out.println(" [x] Sent '" + message1 + "'");  
              
            channel.basicPublish(EXCHANGE_NAME, routingKey2, null, message2.getBytes());  
            System.out.println(" [x] Sent '" + message2 + "'");  
        }  
    }  
}

消费者代码







次阅读

扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。


扫码关注

评论