每个消息类型的RabbitMQ队列与每个目标的队列

时间:2020-08-23 09:11:08

标签: rabbitmq messaging topology

您将实施哪种设置

  • 每个目标一个队列
  • 每种消息类型的队列

一些关于我的设置的信息:

  • 生产者是宏观服务(它们向扇出交换产生消息(不同的tyoes))
  • 消费者也是宏服务(Java App或ETL-App),并负责绑定/路由
  • 一个生产者和一个消费者实际上拥有多达3个API(将来,API数量可能会增加,最多有10个API(每个Poducer x Consumer)
  • 请注意,该项目有8个Macroservice,可以是生产者和消费者。

enter image description here

1 个答案:

答案 0 :(得分:0)

职位A-发送电子邮件: 消费者是向目标发送电子邮件的电子邮件服务

作业B-写入数据库: 消费者B更新给定模型中的数据

一切正常时,就像往常一样。

混乱情况:邮件服务错误(无论何种原因)

  • 每个目标的队列(FIFO): 电子邮件服务错误,邮件停留在队列中, 您无法更新数据库,因为电子邮件卡住了

解决方案死信队列,在x重试移至死队列后卡住。 以前的消息将会继续

  • 每种消息类型的队列: 电子邮件服务错误,电子邮件信息被卡住, 数据库照常更新 只有电子邮件失败

考虑该工作案例,以帮助您做出更多的弹性选择

是的,“每个目的地都有一个队列”,更少的代码,更易于扩展工作人员... 但是如果有问题... 此解决方案将很快完成(但从死信队列开始) (以下为代码,更少要做)

“每种消息类型的队列”将减少失败 “每种消息类型的队列”一开始需要做更多的工作,但会减少 随时间进行维护/手动工作 并且代码库对于下一个开发人员将更容易理解 (以下为代码,还有更多工作要做)


完成思考错误的情况

相关问题