MassTransit确保在发布消息之前创建队列



我们有多个服务,并使用发布/订阅模式从服务A发送事件,由其他服务(B&C(处理。目标是允许多个队列通过匹配绑定键/主题来接收来自Producer的消息。

如果服务B&C先启动。在这种情况下,Subscribe方法会创建Exchanges和Queues,以便在发布消息时接收消息。但是,如果服务A首先启动,则由于未创建接收队列,因此已发布的消息将丢失。

正在寻找最佳实践方法,以确保在发布之前创建队列。生产者不了解消费者,随着时间的推移,给定消息类型可能会有更多的消费者,因此我们不能让生产者代码负责队列创建。

我们目前的实现是在背板上使用RabbitMQ,但我们希望随着时间的推移迁移到SQS和Azure服务总线,因此我们需要它与消息代理无关的

简单的答案是,在启动发布者之前先启动消费者服务。

或者,您可以将DeployTopologyOnly标志与自定义构建或命令行一起使用来部署队列/交换/绑定,而无需实际启动使用者,但它仍然是具有所有配置的使用者服务。

最新更新