我正在使用RabbitMQ创建一个非常基本的应用程序来进行消息传递。消息在一个服务器上发布,然后下游的第二个服务器将具有消耗消息的长时间运行的进程。现在,我把它设置如下:
出版商:
消费者计划:
true
)我的这个过程运作良好。我遇到的情况是,如果我的消费者程序消失,似乎发送到 myexchange 的新消息将丢失,因为没有队列将被绑定到交换机。是否存在这样的配置,即使消费者程序消失,消息仍然可以排队,以便当消费者程序重新联机时,仍然可以接收消息?
答案 0 :(得分:0)
当我写这个问题时,我似乎意识到了一个答案,发表在下面。当然,如果这是一个坏主意,或者你有其他建议,请离开。
如果您使用默认交换(使用空字符串作为名称进行交换),您可以声明一个队列,它将自动绑定到此默认交换(请参阅Default Exchange)。因此,您可以在发布者上声明 my-specific-queue-name 队列,然后重新声明它并在您的使用者脚本中开始使用它。在AMQP / RabbitMQ中,您可以多次重新声明事物,只有在它们不存在的情况下才能创建它们。因为您要在发布者上声明队列,所以如果有其他系统正在侦听来自该发布者的消息,则无关紧要。