2013-12-02 3 views
0

У меня есть система, которая обертывает RabbitMQ с помощью erlang и клиента erlang. У нас есть случайная ситуация, когда абонент идет вниз и очередь сообщений. Мы будем внедрять очередь мертвых букв в ближайшем будущем, но я хотел бы реализовать инструмент в среднем времени для привязки к заданной очереди и PULL всех сообщений. Затем я могу оттолкнуть их в другое место и воспроизвести их, когда абонент вернется в онлайн. Тем не менее, мне сложно определить лучший способ сделать это с помощью Rabbit tutorials/docs/Mainly, потому что учебники немного не нужны для клиентов erlang.RabbitMQ Pull all messages from queue

Есть ли у кого-нибудь опыт в этом или что-то подобное?

ответ

0

Я думаю, что лучшее, что нужно сделать, это сделать очередь не auto delete. Таким образом, очередь останется в живых, когда абонент опустится. Обмен будет продолжать выводить сообщения в очередь, которая будет хранить их до тех пор, пока абонент не вернется и снова начнет чтение.

+0

Спасибо @robthewolf. У нас действительно есть прочная очередь. Тем не менее, эти очереди растут настолько, что мы хотим очистить очереди, но не потерять данные. Поэтому я хотел бы вытащить сообщения из очереди, а затем очистить. Еще раз спасибо. – RockyMountainHigh

+0

Вам нужно очистить их, потому что они связывают ресурсы и заставляют вашу систему замедляться? В противном случае, если это просто потому, что очередь выглядит слишком большой, то я не уверен, что вижу здесь необходимость. Я знаю, что RMQ лучше всего работает с пустыми очередями, я уверен, что это ограничено отдельными очередями, поэтому одна большая очередь не должна влиять на остальную часть системы RMQ. – robthewolf

+0

Я только что отредактировал свой ответ, поскольку имел в виду, что очередь не должна автоматически удаляться. Долговечность очереди, обмена и сохранения сообщений имеет смысл только в том случае, если у вас есть проблема с тем, что сервер RMQ идет вниз, а не подписчик. Из вашего комментария я предполагаю, что вы уже делаете это так, но я просто хотел обратить внимание на мою предыдущую ошибку. – robthewolf