`

rabbitmq 学习-8- Exchange Queue RoutingKey关系说明

阅读更多

String queue = channel.queueDeclare("test.queue").getQueue();

Rabbitmq Server 会有以下操作:

 

  • 定义了一个queue,名称为test.queue

 

 

  • queue的名称(test.queue)作为routingKey,将当前这个queue binding到一个默认的exchange(名称为空,服务器自动创建的)上

 

如果我们 binding的话

channel.queueBind("test.queue", "test.exchange", "test.routingkey");

上边和默认的Exchange进行的binding还是会存在的

经过同事lucas多次测试发现,以前认为RoutingKey是唯一的或由Exchange和RoutingKey决定一条唯一的由Exchange到Queue的线路是不正确的
测试结果如下:

Exchange Name

Queue Name

Routing Key

 

test.queue     

test.queue

 

test.queue2    

test.queue2

test.exchange  

test.queue     

test.routingkey

test.exchange  

test.queue2    

test.routingkey

test.exchange  

test.queue     

test.routingkey2

test.exchange1

test.queue     

test.routingkey

由结果可以看出,由ExchangeQueueRoutingKey三个才能决定一个从Exchange到Queue的唯一的线路。

画张图,不是很准确

rabbitmq 学习-8- Exchange Queue RoutingKey关系说明 - micro sun - 学无止境

分享到:
评论

相关推荐

    rabbitmq动态绑定exchange,routingKey,queue

    关于rabbitmq的原生api和spring amqp的api的动态绑定exchange,routingKey,queue 说明文地址: http://blog.csdn.net/phantomes/article/details/47284829

    rabbitmq-server-windows-3.8.9,内含延迟插件(rabbitmq_delayed_message_exchange-3.8.0.ez)

    channel.basic_publish(exchange='delayed_exchange', routing_key='queue_name', body='Hello, World!', properties=props) print(" [x] Sent 'Hello, World!'") connection.close() ``` 这里的“x-delay”头就是...

    rabbitmq_delayed_message_exchange3.7

    channel.queue_bind(queue='delayed_queue', exchange='delayed_exchange', routing_key='') # 发布延迟消息 delay_time = 60 * 1000 # 1分钟延迟 props = pika.BasicProperties(delivery_mode=2, headers={'x-...

    rabbitmq-java-client-bin-3.3.4.zip

    在Java客户端中,生产者通过创建一个连接到RabbitMQ服务器的Channel,然后定义交换机(Exchange)和路由键(Routing Key),最后发布消息到指定的交换机。 2. **消费者(Consumer)**:消费者是从RabbitMQ接收消息的应用...

    RabbitMQ消息插件rabbitmq_delayed_message_exchange3.7

    rabbitmqadmin declare binding source=delayed_exchange destination=my_queue routing_key=my_routing_key ``` 4. **消费消息**:消费者可以从`my_queue`队列中正常接收延迟后到达的消息。 **应用场景** 1. **...

    rabbitmq_delayed_3.6.x延迟插件.rar

    rabbitmqadmin declare binding source=my_delayed_exchange destination=my_delayed_queue routing_key=* ``` 4. 发布延迟消息:发布消息时,添加`x-delay`头,例如: ``` rabbitmqadmin publish exchange=my_...

    rabbitmq-java-client-bin-3.3.4

    5. **绑定(Binding)**:将交换器和队列关联起来,并指定一个路由键(Routing Key),根据这个键来决定消息如何被路由到队列。 6. **发布/消费(Publish/Consume)**:发布者通过交换器将消息发送到队列,消费者则...

    rabbitmq-dotnet-client-3.5.0

    `BasicPublish`方法是发布消息的主要接口,需要指定交换机(Exchange)、路由键(Routing Key)以及实际的消息内容。交换机决定了消息如何分发,路由键则与队列(Queue)绑定规则关联。 4. 消息消费:接收方称为...

    rabbitmq开发规范

    channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes("UTF-8")); ``` - **Spring方式**: 使用`RabbitTemplate`的`convertAndSend`方法,指定`...

    rabbitMQ实战java版-rabbitMQ-demo.zip

    channel.basicPublish("exchangeName", "routingKey", null, message.getBytes()); // 接收消息 GetResponse response = channel.basicGet("queueName", false); if (response != null) { byte[] body = response....

    rabbitmq代理配置和编码1

    对于`SEND`帧,目的地通常为`/exchange/<exchangeName>/[/routingKey]`,这表示消息将被发送到定义的交换机,并指定`routingKey`。`routingKey`用于决定消息如何路由到不同的队列,基于交换机的类型和绑定规则。 2...

    Delphi-RabbitMQ.zip

    Exchange, RoutingKey: string; Properties: PMessageProperties; Body: TBytes); begin // 处理消息 Writeln('Received message: ' + UTF8ToString(Body)); // 如果不需要重新处理,确认消息已被消费 Channel....

    Laravel开发-rabbitmq-laravel

    `rabbitmq-laravel` 包支持发布和绑定交换机,可以创建不同类型(如 direct、topic、fanout 等)的交换机,并使用路由键(routing key)进行消息分发。此外,还可以利用死信队列(dead letter queues)处理错误任务...

    php7可用 rabbitmq-c 插件

    $queue->bind('my_exchange', 'routing_key'); $queue->consume('my_callback_function'); ``` ### 应用场景 - **异步处理**: 将耗时的任务(如发送邮件、生成报表)放入消息队列,后台进程处理,提升Web应用...

    Laravel开发-rabbitmq-client

    $message->delivery_info['routing_key'], true, // mandatory false, // immediate array('correlation_id' => $message->get_properties()['correlation_id']) // 设置响应关联ID ); RabbitMq::connection...

    rabbitmq-java-client-javadoc-2.7.0.zip

    在RabbitMQ中,生产者(Producer)负责发送消息,消费者(Consumer)负责接收消息,两者通过交换机(Exchange)和队列(Queue)进行连接。交换机根据预设的路由规则将消息分发到相应的队列,队列则作为消息的临时...

    rabbitmq-c.tar.gz

    rabbitmq_basic_publish(channel, exchange_name, routing_key, properties, message); ... // 关闭连接 rabbitmq_connection_close(conn); rabbitmq_destroy_connection(conn); } ``` 创建一个消费者应用...

    rabbitmq-server-3.7.9+ErLang.zip

    3. **绑定(Binding)**:绑定定义了交换机如何将消息路由到队列,通常包含路由键(Routing Key),用于指定消息的匹配规则。 4. **生产者(Producer)**:生产者是发送消息到RabbitMQ的组件,它们不关心消息最终会...

    rabbitmq延迟插件.zip

    rabbitTemplate.convertAndSend("delay-exchange", "delay-routing-key", message, new MessagePostProcessor() { @Override public Message postProcessMessage(Message message) throws AmqpException { ...

    rabbitmq_delayed_message_exchange-3.8.0.zip

    routing_key='some_queue', body=message_data, properties=pika.BasicProperties( delivery_mode=2, # make message persistent headers={'x-delay': 5000} # delay by 5 seconds ) ) ``` 在这个例子中,...

Global site tag (gtag.js) - Google Analytics