RabbitMQ的更好的设计方法是什么?

问题描述 投票:0回答:1

[我最近几周一直在和RabbitMQ玩耍,并开发了以下设计模式

producer <--> message broker (rabbitmq) <---> queues <---> consumer.

我使用过几个RabbitMQ客户端,例如EasyNetQMassTransit。两个客户端都使用我的上述设计,但是它们之间的共同点是,如果不存在Exchange,它将创建一个,并且类似地,如果不存在队列,则将相应地创建一个。

但是,我认为从生产者或消费者创建交换,队列和绑定是一种好的设计方法?

在RabbitMQ管理中手动创建交换和队列是否更有意义?然后阻止Producer和Consumer在代码中创建以上代码?

但是我更担心的是,如果删除交换和队列又会破坏生产者和消费者,该怎么办?

你对男人有什么建议?

c# rabbitmq masstransit
1个回答
0
投票

您的生产者和消费者的CD均应负责创建这些资源,您的CD应检查资源是否存在,并创建不存在的资源。

您应避免从代码中创建/删除资源,生产者和使用者实际上应该只是发布/使用,如果您使用的是云提供商,则根本不应该授权代码来操纵资源。

我的操作方式:

  • 应该从设置文件中读取消费者/生产者使用的交换/队列的信息。
  • 开始部署时,CD应该创建所需的交换/队列。
  • CD然后应通过环境变量覆盖设置。
  • 然后,生产者/消费者将处理CD提供的资源信息,这样CD可以确保双方都使用相同的队列/交换信息。

此外,您还将减少错误沟通,资源过度使用和资源操纵(如删除队列!)的风险。

© www.soinside.com 2019 - 2024. All rights reserved.