在我的系统中,我使用spring-cloud-stream
和RabbitMQ来发送和接收事件。我让RabbitMQ运行,服务A 向上,服务B 向下运行。 服务A 向服务B 发送事件。然后我打开我的服务B ,现在我希望Rabbit能够发布这个事件 - 但没有任何反应。这是正确的行为吗?我是RabbitMQ的新手,但我认为它应该保证所有事件最终都能找到它的接收器。我的应用程序很简单,基于example on github,没有额外的配置。我错过了什么?
答案 0 :(得分:1)
如果您的消费者没有group
,则该队列是匿名的自动删除队列。你需要一个持久性的小组。请参阅consumer groups。
生产者不会将队列绑定到交换机,消费者会这样做。
如果首先绑定生产者,则在新的使用者组之前,消息也将丢失。
使用RabbitMQ绑定器,如果您提前知道了使用者组,则可以设置...producer.requiredGroups
属性,并且绑定队列。
<强> requiredGroups 强>
以逗号分隔的组列表,生产者必须确保消息传递,即使它们在创建后启动(例如,通过在RabbitMQ中预先创建持久队列)。