Erlang RabbitMQ从队列中提取所有消息

Erlang RabbitMQ从队列中提取所有消息,erlang,rabbitmq,Erlang,Rabbitmq,我有一个使用erlang和erlang客户端包装RabbitMQ的系统。我们偶尔会遇到这样的情况:订阅者下线,消息排队。我们将在不久的将来实现一个死信队列,但我想同时实现一个工具来绑定到给定队列并提取所有消息。然后,我可以将它们推到其他地方,并在订户重新联机时重播它们。但是,我很难确定使用Rabbit教程/docs/实现这一点的最佳方法,主要是因为erlang客户端缺少教程 有人有过这样或类似的经历吗?我认为最好的办法是将队列设置为而不是自动删除。这样,当订阅服务器关闭时,队列将保持活动状态。交

我有一个使用erlang和erlang客户端包装RabbitMQ的系统。我们偶尔会遇到这样的情况:订阅者下线,消息排队。我们将在不久的将来实现一个死信队列,但我想同时实现一个工具来绑定到给定队列并提取所有消息。然后,我可以将它们推到其他地方,并在订户重新联机时重播它们。但是,我很难确定使用Rabbit教程/docs/实现这一点的最佳方法,主要是因为erlang客户端缺少教程


有人有过这样或类似的经历吗?

我认为最好的办法是将队列设置为而不是自动删除。这样,当订阅服务器关闭时,队列将保持活动状态。交换将继续将消息推送到队列,队列将存储消息,直到订户返回并再次开始阅读。

谢谢@robthewolf。实际上,我们有一个持久的队列。但是,这些队列越来越大,我们希望清除队列,但不会丢失数据。因此,我希望从队列中提取消息,然后清除。再次感谢。您是否需要清除它们,因为这会占用资源并导致系统速度减慢?否则,如果只是因为队列看起来太大,那么我不确定我是否认为有必要这样做。我知道RMQ最适用于空队列,我非常确定这仅限于单个队列,因此一个大队列不应影响RMQ系统的其余部分。我刚刚编辑了我的答案,因为我的意思是将队列设置为不自动删除。队列、交换和消息持久性的持久性只有在RMQ服务器(而不是订阅者)出现问题时才相关。从你的评论中,我猜你已经这样做了,但我只是想提醒大家注意我之前的错误。我们确实需要清除队列。事实上,我们曾经遇到过几种情况,我们需要通过RMQ控制台清除队列,因为我们在4台集群服务器中的每台服务器上收集了250+k条消息,并且我们发现消息传递速度明显减慢。显然,这种数据丢失情况并不理想。