【问题标题】:RabbitMQ exchange/queue design - one or several messagesRabbitMQ 交换/队列设计 - 一条或多条消息
【发布时间】:2019-11-03 12:55:38
【问题描述】:

我尝试将消息路由到不同的队列,但如果我的应用程序应该发送多条消息或只发送一条消息,我无法解决这个问题(可能是一个简单的问题)。

例如,我想启动一个发出 1 条消息并在正确队列中传递的作业。消费者(工人)做他的工作,完成后发送应该做几件事的响应(例如,数据库更新,发送邮件......):但是如何?

1.) 使用 routingkey 绑定队列,例如:job.done.* 到队列 db-update, send-mail 消费者在哪里进行 db 更新和邮件发送?

2.) 创建一个带有队列绑定到 db-update 的数据库交换,并创建一个带有队列发送邮件的发送邮件交换,并在工作人员处为每个交换创建一条消息?

所以他们的主要问题或多或少是,如果消息应该触发超过 1 个操作(传递到超过 1 个队列),是否可以为每个服务创建 1 个交换并发送多个消息或仅依赖于路由键?

我的感觉告诉我应该依赖 routingkey 和绑定队列,但是如果架构变得更复杂,那么只有少数主题交换似乎也有点错误?

【问题讨论】:

    标签: service routing rabbitmq message


    【解决方案1】:

    您可以使用带有扇出类型的交换。扇出交换将消息路由到绑定到它的所有队列。

    【讨论】:

    • 没错。但是,如果 job1 应该在完成时发送邮件和 db update 并且 job2 发送邮件、db update 并将文件写入 s3 怎么办?使用这种方法,我将为我的应用程序 1 交换中的每个“逻辑”提供......这是一个好方法吗?使用路由键绑定到主题交换有什么区别和/或好处?
    • 这两个工作独立完成每条消息的任务?谁产生这些消息?
    猜你喜欢
    • 2016-04-26
    • 2019-11-24
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2016-08-21
    • 2016-08-13
    相关资源
    最近更新 更多