在rabbitmq上删除队列时通知使用者

在rabbitmq上删除队列时通知使用者,rabbitmq,Rabbitmq,我有一些客户端通过autodelete:yes连接到exchange。这些都是出版商和消费者。但基本上现在让我们假设他们正在发布消息。因为每个客户机都有一个唯一的绑定密钥,所以我可以对使用这些机器的机器上的每条消息执行显式操作。一切正常 现在,如果客户端崩溃或者我手动终止它(通过SIGINT、ctrl+c),那么队列将被删除。我有没有办法通知远程机器上的消费者队列已被删除 我正在考虑在我的客户机应用程序上创建一个信号处理程序,因此每当我捕获到SIGINT或SIGTERM时,我都会通知远程使用者(

我有一些客户端通过
autodelete:yes
连接到exchange。这些都是出版商和消费者。但基本上现在让我们假设他们正在发布消息。因为每个客户机都有一个唯一的绑定密钥,所以我可以对使用这些机器的机器上的每条消息执行显式操作。一切正常

现在,如果客户端崩溃或者我手动终止它(通过SIGINT、ctrl+c),那么队列将被删除。我有没有办法通知远程机器上的消费者队列已被删除

我正在考虑在我的客户机应用程序上创建一个信号处理程序,因此每当我捕获到SIGINT或SIGTERM时,我都会通知远程使用者(我会向他们发送一条消息,告诉他们具有唯一id的队列将被删除)


是否有其他方法可以做到这一点,或者“我的方法”是正确的方法?

作为消息传递的一般规则,消费应用程序不关心生产应用程序的状态

在RabbitMQ中,生产应用程序可以通过两种机制之一了解消费应用程序的状态。第一种(也是首选的)方法是通过。当您的消息无法传递(因为目标队列不存在)时,将在此处路由,并且您的应用程序能够从DLX上配置的队列中提取消息,以确定它们是否未到达目标

第二种方法是在消息上设置标志。这将导致代理在目标队列不再存在的情况下,通过Basic.Return方法将消息直接发送回生产应用程序


如果上述各项不能满足您的需要,您可能需要重新审视您的体系结构,因为可能有更好的方法来设计您的应用程序。

作为消息传递的一般规则,消费应用程序不关心生产应用程序的状态

在RabbitMQ中,生产应用程序可以通过两种机制之一了解消费应用程序的状态。第一种(也是首选的)方法是通过。当您的消息无法传递(因为目标队列不存在)时,将在此处路由,并且您的应用程序能够从DLX上配置的队列中提取消息,以确定它们是否未到达目标

第二种方法是在消息上设置标志。这将导致代理在目标队列不再存在的情况下,通过Basic.Return方法将消息直接发送回生产应用程序


如果上述各项不能满足您的需要,您可能需要重新审视您的体系结构,因为可能有更好的方法来设计您的应用程序。

请您澄清一下?删除队列时,消费者将与其一起删除(同时关闭伴随的频道)。因此,应该没有消费者需要通知。我会澄清内容。基本上,对于消费者,我指的是一台远程机器,它从我的客户发布到的exchange中进行消费。那么您使用的是扇出还是主题交换?我认为您可能需要提供一个显示拓扑结构的图表,因为不太清楚谁在哪里发布,谁在哪里消费。请您澄清一下?删除队列时,消费者将与其一起删除(同时关闭伴随的频道)。因此,应该没有消费者需要通知。我会澄清内容。基本上,对于消费者,我指的是一台远程机器,它从我的客户发布到的exchange中进行消费。那么您使用的是扇出还是主题交换?我认为您可能需要提供一个图表来显示您的拓扑结构,因为不太清楚谁在哪里发布,谁在哪里消费。即时消息很有意义。谢谢你注意到了。我会尝试一下,并用我的结果进行评论。我的错,我想写强制性的。即时消息是有意义的。谢谢你注意到了。我会尝试一下,并用我的结果进行评论。我的错,我想写强制性的。