RabbitMq的消息队列类型direct、fanout、topic、headers(headers抛弃)

2019-12-18 17:31:17 浏览数 (1)

direct (交换器 路由键匹配,投递到对应的队列)

1 服务端 server 将 消息 msg_txt 投递 到 交换器 exchange_name 路由键为 routing_key_name ,当 有队列 queue_name 绑定到 本交换器 exchange_name 并且绑定路由键为 routing_key_name ,则消息到达队列 queue_name

2 服务端 server 将 消息 msg_txt 投递 到 交换器 exchange_name 路由键为 routing_key_name ,当 有队列 queue_name 绑定到 本交换器 exchange_name 并且绑定路由键为 routing_key_name_1 非 routing_key_name ,消息丢弃

3 服务端 server 将 消息 msg_txt 投递 到 交换器 exchange_name 路由键为 routing_key_name ,无 队列 绑定到 本交换器 exchange_name,无论绑定的 路由键 是不是 routing_key_name 消息丢弃

1 客户端 client 将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 routing_key_name , 则 接受 来自 交换器 exchange_name 路由键为 routing_key_name 的消息,不接受 routing_key_name_1 的消息

2 客户端 client 将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 routing_key_name 和 routing_key_name_1 , 则 接受 来自 交换器 exchange_name 路由键为 routing_key_name 和 routing_key_name_1 的消息

3 客户端 client 将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 routing_key* , 则 接受 来自 交换器 exchange_name 路由键为 routing_key* 的消息,不接受 路由键为 routing_key_name 和 routing_key_name_1 的消息

4 客户端 client 将 多个队列 queue_name_1 queue_name_2 queue_name_3 都绑定 到  交换器 exchange_name 路由键为 routing_key_name , 则 所有队列 接受 来自 交换器 exchange_name 路由键为 routing_key_name 的所有消息不轮训

fanout (交换器,投递到对应的队列) 

1 服务端 server 将 消息 msg_txt 投递 到 交换器 exchange_name 路由键无论是什么 当 有队列 queue_name 绑定到 本交换器 exchange_name 则消息到达队列 queue_name

2 服务端 server 将 消息 msg_txt 投递 到 交换器 exchange_name 路由键无论是什么 无 队列 绑定到 本交换器 exchange_name 消息丢弃

1 客户端 client 将 队列 queue_name 绑定 到  交换器 exchange_name 路由键无论是什么 则 接受 来自 交换器 exchange_name 的消息

2 客户端 client 将 多个队列 queue_name_1 queue_name_2 queue_name_3 都绑定 到  交换器 exchange_name 路由键无论是什么 , 则 所有队列 接受 来自 交换器 exchange_name 所有消息不轮训

topic (交换器 路由键 正则匹配,使用 * 匹配一个单词,# 匹配多个单词,投递到对应的队列)

1 同direct

2 客户端 client 若将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 routing_key.* ,  则 接受 来自 交换器 exchange_name 路由键为 routing_key.name1 和 routing_key.name2 的消息 不接受 routing_key_name 和 routing_key.name1.name2 的消息

3 客户端 client 若将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 routing_key.# ,  则 接受 来自 交换器 exchange_name 路由键为 routing_key.name1 和 routing_key.name2 和 routing_key.name1.name2 的消息 不接受 routing_key_name 的消息

4 客户端 client 若将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 # ,  则 接受 来自 交换器 exchange_name 路由键为 routing_key.name1 和 routing_key.name2 和 routing_key.name1.name2 和 routing_key_name 的消息

5 客户端 client 若将 队列 queue_name 绑定 到  交换器 exchange_name 路由键为 routing_key* 或 routing_key# ,  则 不接受 来自 交换器 exchange_name 路由键为 routing_key.name1 和 routing_key.name2 和 routing_key.name1.name2 和 routing_key_name 的消息

0 人点赞