10 交换机详解

1 交换机类型

1.1 Direct(直连交换机)

1.1.1 解释
根据消息携带的路由键(routing key)将消息投递给对应队列的,步骤如下:
	1: 将一个队列绑定到某个交换机上,同时赋予该绑定一个路由键(routing key)
		// 绑定队列到交换机
        channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "key");
        
	2: 当一个携带着路由值为R的消息被发送给直连交换机时,交换机会把它路由给绑定值同样为R的队列
		channel.basicPublish(EXCHANGE_NAME, "key", null, message.getBytes());

1.1.2 图解

直连交换机

1.2 Fanout(扇型交换机)

1.2.1 解释
将消息路由给绑定到它身上的所有队列。
	// 声明exchange(交换机)
	hannel.exchangeDeclare(EXCHANGE_NAME, "fanout");
不同于直连交换机,路由键在此类型上不启任务作用。
如果N个队列绑定到某个扇型交换机上,当有消息发送给此扇型交换机时,交换机会将消息的发送给这所有的N个队列上
	// 绑定队列到交换机
    channel.queueBind(queueName, EXCHANGE_NAME, "");
Fanout交换机转发消息是最快的;
1.2.2 图解

扇型交换机

1.3 Topic(主题交换机)

1.3.1 解释
将路由键和某模式进行匹配;此时队列需要绑定要一个模式上;符号"#"匹配一个或多个词,符号"*"匹配一个词;因此"key.#"能够匹配到"key.gp6.name"和"key.gp6",但是"key.*" 只会匹配到"key.gp6";
1.3.2 图解

主题交换机

1.4 Headers(头交换机)

1.4.1 解释
不处理路由键;而是根据发送的消息内容中的headers属性进行匹配;在绑定Queue与Exchange时指定一组键值对;当消息发送到RabbitMQ时会取到该消息的headers与Exchange绑定时指定的键值对进行匹配;如果完全匹配则消息会路由到该队列,否则不会路由到该队列;headers属性是一个键值对,可以是Hashtable,键值对的值可以是任何类型;而fanout,direct,topic 的路由键都需要要字符串形式的;
1.4.2 匹配规则
x-match = all :表示所有的键值对都匹配才能接受到消息

x-match = any :表示只要有键值对匹配就能接受到消息

1.5 默认交换机

1.5.1 解释
默认交换机(default exchange)实际上是一个由RabbitMQ预先声明好的名字为空字符串的直连交换机(direct exchange)
每个新建队列(queue)都会自动绑定到默认交换机上,绑定的路由键(routing key)名称与队列名称相同。
1.5.2 默认交换机

默认交换机

1.6 Dead Letter Exchange(死信交换机)

1.6.1 解释
在默认情况,如果消息在投递到交换机时,交换机发现此消息没有匹配的队列,则这个消息将被悄悄丢弃。
为了解决这个问题,RabbitMQ中有一种交换机叫死信交换机。
当消费者不能处理接收到的消息时,将这个消息重新发布到另外一个队列中,等待重试或者人工干预。
这个过程中的exchange和queue就是所谓的”Dead Letter Exchange 和 Queue”

2 交换机属性

2.1 Name

交换机名称

2.2 Durability

是否持久化。如果持久性,则RabbitMQ重启后,交换机还存在

2.3 Auto-delete

当所有与之绑定的消息队列都完成了对此交换机的使用后,删掉它

2.4 Arguments

扩展参数

2.5 Type

交换机类型

2.6 Internal

当前Exchange是否用于RabbitMQ内部使用,默认为False
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值