RabbitMQ设计建议:将DLX消息路由回原始发布者

我有

编辑:基本要求是我有多个Web服务服务器进程从Web服务客户端接收请求,执行一些处理(我想使用工作队列的处理方式),然后将结果返回给相应的客户端。但是,我希望能够在超时时间内等待此队列的使用者接收已发布的请求如果该超时时间到期,那么我希望原始的Web服务进程收到此通知,以便可以将其反馈给客户端。


  • 我有多个发布者将消息发布到同一交易所
  • 此交换上有多个使用者从同一个队列中进行消费,即“任务队列”

我正在尝试实现一种“发布TTL”,通过该方式,如果消息是不正确的,则通知始发发布者(仅)。(我希望发布者知道在一定的超时时间内是否没有使用邮件)。

我有一个解决方案,如下所示:

  • 发布消息时,每个发布者都使用包含唯一(每个发布者)Process-ID的路由密钥,例如,发布者3的thekey.pid3
  • 消费者每个都从同一队列进行消费,该队列使用路由键“ thekey。#绑定到交换
  • 当发布者声明队列时,我没有为DLX明确指定任何路由键,而仅是' x-dead-letter-exchange '。这意味着,如果一条消息被取消了签名,则原始路由键(即“ thekey.pid3 ”)将传递到DLX。
  • 每个发布者使用其特定的路由密钥(例如“ thekey.pid3 ”)将其自己的新使用者队列绑定到DLX

因此,这解决了我的要求,因为只有发布消息的发布者才会将DLX消息路由到该消息。

但是,这似乎有点令人费解,而且效率低下,因为所有消息都会发生通配符路由(那些死信除外),通常应该发生这种情况。

这必须是一个普遍的要求-我的解决方案是否可取?有没有更有效的方法可以做到这一点?还是我走在正确的轨道上?

这是显示我的设计的图:

编辑: 在下图中,DLX实际上应该连接到队列,而不是Exchange! DLX回到原始发布者

谢谢!

我有

是的,所以事实证明该解决方案是非常有效的。使用通配符绑定密钥和主题交换时,可能会遇到很小的延迟问题,但可能并没有真正引起我们关注的地方。

邮件列表中的一则评论是,由于这是一个基于RPC的系统,每个发布者都已经定义了一个唯一的响应队列,因此可以将该队列绑定到DLX(而不是创建一个新的,每个唯一的队列)。发布商),从而获得“有效”响应和带有死信的消息,这些消息均传递到同一队列中。

就我而言,我想将这种“发布TTL”功能包装在通用发布商中,因此提及响应队列没有任何意义-尽管我的解决方案的效率可能略低,因为还有更多的回合,如果发生死信,请跳闸。

如果您对Rabbit的家伙用于主题路由的机制感兴趣,可以查看以下网址 http : //www.rabbitmq.com/blog/2010/09/14/very-fast-and-scalable-topic- routing-part-1 / http://www.rabbitmq.com/blog/2011/03/28/very-fast-and-scalable-topic-routing-part-2/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RabbitMQ:当原始交换中没有队列时将消息移动到 DLX

来自分类Dev

消费者如何根据发布者设置的消息的优先级来获取消息 RabbitMQ

来自分类Dev

NATS 发布者能否将一条消息发送到多个队列中?

来自分类Dev

HTTP发布者的RabbitMQ身份验证和授权

来自分类Dev

为什么发布者在Pika RabbitMQ中声明队列a?

来自分类Dev

Rabbitmq:发布者在 Nodejs amqplib 中确认

来自分类Dev

如何更改资产发布者默认未找到消息?

来自分类Dev

发布者仅在无限循环中发送消息

来自分类Dev

订户可以根据发布者选择消息吗?

来自分类Dev

将主题/发布者转换为另一个发布者

来自分类Dev

我如何默认将发布者证书安装到“受信任的发布者”中?

来自分类Dev

将URLSession.DataTaskPublisher转换为Future发布者

来自分类Dev

如何将发布者转换为CurrentValueSubject?

来自分类Dev

Swift将尚未发送价值的发布者合并

来自分类Dev

在ApiController中获取原始发布请求

来自分类Dev

AMQP Rabbitmq Nodejs-每次订阅者关闭时都会创建其他发布者

来自分类Dev

RabbitMQ发布者-多个订阅者-如何在.Net中设置?

来自分类Dev

如何在RabbitMQ中使用不同的路由键将多条消息发布到单个队列?

来自分类Dev

Spring RabbitTemplate-如何在发布者确认模式下保留NACK的已发布消息

来自分类Dev

如何检测订户何时在发布者端发现/丢失了发布的消息?

来自分类Dev

为什么 ROS 发布者不发布第一条消息?

来自分类Dev

同步提交发布者

来自分类Dev

同步提交发布者

来自分类Dev

使用新的订阅者连接(MQTT / Mosquitto)显示来自发布者的错过的消息

来自分类Dev

在Spring AMQP-RabbitMQ中处理发布者确认超时

来自分类Dev

发布者等待消费消息,同时它应该做两件事(发布和订阅订阅者的回复)。)

来自分类Dev

RabbitMQ:将消息路由到线程

来自分类Dev

RabbitMQ:将消息路由到线程

来自分类Dev

ros python发布者/订阅者

Related 相关文章

  1. 1

    RabbitMQ:当原始交换中没有队列时将消息移动到 DLX

  2. 2

    消费者如何根据发布者设置的消息的优先级来获取消息 RabbitMQ

  3. 3

    NATS 发布者能否将一条消息发送到多个队列中?

  4. 4

    HTTP发布者的RabbitMQ身份验证和授权

  5. 5

    为什么发布者在Pika RabbitMQ中声明队列a?

  6. 6

    Rabbitmq:发布者在 Nodejs amqplib 中确认

  7. 7

    如何更改资产发布者默认未找到消息?

  8. 8

    发布者仅在无限循环中发送消息

  9. 9

    订户可以根据发布者选择消息吗?

  10. 10

    将主题/发布者转换为另一个发布者

  11. 11

    我如何默认将发布者证书安装到“受信任的发布者”中?

  12. 12

    将URLSession.DataTaskPublisher转换为Future发布者

  13. 13

    如何将发布者转换为CurrentValueSubject?

  14. 14

    Swift将尚未发送价值的发布者合并

  15. 15

    在ApiController中获取原始发布请求

  16. 16

    AMQP Rabbitmq Nodejs-每次订阅者关闭时都会创建其他发布者

  17. 17

    RabbitMQ发布者-多个订阅者-如何在.Net中设置?

  18. 18

    如何在RabbitMQ中使用不同的路由键将多条消息发布到单个队列?

  19. 19

    Spring RabbitTemplate-如何在发布者确认模式下保留NACK的已发布消息

  20. 20

    如何检测订户何时在发布者端发现/丢失了发布的消息?

  21. 21

    为什么 ROS 发布者不发布第一条消息?

  22. 22

    同步提交发布者

  23. 23

    同步提交发布者

  24. 24

    使用新的订阅者连接(MQTT / Mosquitto)显示来自发布者的错过的消息

  25. 25

    在Spring AMQP-RabbitMQ中处理发布者确认超时

  26. 26

    发布者等待消费消息,同时它应该做两件事(发布和订阅订阅者的回复)。)

  27. 27

    RabbitMQ:将消息路由到线程

  28. 28

    RabbitMQ:将消息路由到线程

  29. 29

    ros python发布者/订阅者

热门标签

归档