RabbitMQ入门

MQ入门教程

Exchanges(交换机)

  • Exchange 的 type

在 RabbitMQ 中,Exchanges(交换机)是消息的分发中心,它根据绑定的规则将消息路由到对应的队列。
每个 Exchange 都有一个type字段,用于定义消息的路由策略。下面是 RabbitMQ 支持的不同 Exchange 的type字段及其含义:

Direct(直连交换机):
type: direct
特点:根据消息的routing key将消息直接路由到与之匹配的队列。routing key在绑定 Exchange 和 Queue 的时候指定,且根据 routingkey 精确匹配,不支持模糊匹配。

Fanout(扇型交换机):
type: fanout
特点:将消息广播到与之绑定的所有队列,不考虑消息的routing key。

Topic(主题交换机):
type: topic
特点:根据消息的routing key和模式进行匹配,将消息路由到与之匹配的队列。routing key可以使用通配符进行模糊匹配,例如 .rabbit 或者 topic.

Headers(头交换机):
type: headers
特点:将消息的header与绑定时定义的header进行匹配,匹配成功则路由到对应的队列。不使用routing key来进行匹配。

  • Exchange 的 durable

指定 Exchange 是否是持久化的。
如果将 Exchange 设置为持久化(durable = true),则在 RabbitMQ 重新启动后,Exchange 将仍然存在。
如果将 Exchange 设置为非持久化(durable = false),则在 RabbitMQ 重新启动后,Exchange 将被删除,并且如果有消息发送到该 Exchange,则这些消息将会丢失。

  • auto delete

Auto-delete 属性用于指定 Exchange 是否应在没有绑定的队列时自动删除。
如果将 Exchange 设置为自动删除(autoDelete = true),则在没有队列与之绑定时,Exchange 将被自动删除。
如果将 Exchange 设置为非自动删除(autoDelete = false),即使没有队列与之绑定,Exchange 也不会自动删除。

  • Internal

Internal 属性用于指定 Exchange 是否是一个内部 Exchange。
如果将 Exchange 设置为内部(internal = true),则该 Exchange 只能从其他 Exchanges 路由消息,并不能直接接收来自生产者的消息。
如果将 Exchange 设置为非内部(internal = false),则该 Exchange 可以接收来自生产者的消息并进行路由。

路由 Key

RabbitMQ 的路由键(routing key)是在生产者发送消息时附加到消息上的一个属性,用于指定消息应该被路由到哪个队列。它在与 Exchange 和 Queue 的绑定中使用,用于匹配规则。

下面是一些示例来解释路由键的作用:

假设有以下三个队列和一个直连交换机:

队列A:queue.A,绑定键为 important。
队列B:queue.B,绑定键为 error。
队列C:queue.C,绑定键为 *.warning。
当生产者发送消息时,将消息的路由键设置为特定的值,例如 important、error 或 test.warning。这个值将与交换机和队列的绑定键进行匹配,以确定消息被路由到哪个队列。

例如,如果生产者发送一个具有路由键为 important 的消息,那么这个消息将被路由到绑定键为 important 的队列A。
如果消息的路由键为 error,那么这个消息会被路由到绑定键为 error 的队列B。
而如果消息的路由键为 test.warning,根据绑定键为 *.warning 的规则,这个消息将被路由到队列C。

值得注意的是,路由键的匹配规则取决于所使用的交换机类型。对于直连交换机,路由键必须精确匹配绑定键;对于主题交换机(topic),可以使用通配符进行模糊匹配;对于扇形交换机(fanout)和头交换机(headers),路由键并不起作用,消息会被广播到所有绑定的队列或根据消息的头属性进行匹配。

消息队列

消息队列参数

Auto expire(自动过期):设置队列的自动过期时间,在指定时间内未被使用或访问时,队列将自动删除。

Message TTL(消息过期时间):指定发送到队列中的消息的过期时间。一旦消息过期,将被标记为过期并从队列中移除。

Overflow behaviour(溢出行为):指定当队列达到最大长度或最大长度字节数时的行为。可以选择丢弃最旧的消息或者拒绝新的消息。

Single active consumer(单个活动消费者):设置为true时,只允许一个消费者连接并消费该队列中的消息。

Dead letter exchange(死信交换机):指定一个交换机,用于接收处理被标记为死信的消息。

Dead letter routing key(死信路由键):指定死信消息在死信交换机中的路由键。

Max length(队列最大长度):限制队列中消息的最大数量。一旦达到最大限制,可以选择丢弃新的消息或者阻塞发布者。

Max length bytes(队列最大长度字节数):限制队列中消息的总字节数。一旦达到最大限制,可以选择丢弃新的消息或者阻塞发布者。

Maximum priority(最大优先级):指定队列中消息的最大优先级,允许将消息设置为不同的优先级。

Version(版本):指定RabbitMQ的版本号。

Master locator(主节点定位器):指定用于定位主节点的规则。

posted @ 2024-07-14 21:51  RafaelLxf  阅读(36)  评论(0)    收藏  举报