Мы используем RabbitMQ + StompJS (w/SockJS & Spring Websocket в качестве промежуточного программного обеспечения, FWIW), чтобы облегчить передачу сообщений через веб-сайты. Все отлично работает, за исключением того, что мы пытаемся StompJS создает очереди как неавтоматическое удаление, то есть мы получаем TONS очередей.stompjs + rabbitmq - создавать очереди автоматического удаления
Мы работаем над этим прямо сейчас с помощью политики, которая очищает неактивные очереди через несколько часов, но мы предпочли бы просто автоматическое удаление очередей, которые завершаются после того, как все клиенты отключится.
Мы попытались установить заголовки auto_delete
, auto-delete
, autoDelete
и любые другие возможные заклинания, которые мы можем найти.
Если мы остановим проверку кадров до их передачи (на минимально возможном уровне в глубине источника StompJS), мы увидим, что эти заголовки присутствуют. Однако они, похоже, не делают это в RabbitMQ (или просто не смотрят на них в команде SUBSCRIPTION?) И создают их как неавтоматическое удаление.
Интересно, что если мы создаем очередь вручную заранее, как автоматическое удаление, регистрация StompJS вызывает ошибку, потому что запрошенный SUBSCRIBE ожидает неавтоматическое удаление. Это говорит о том, что StompJS (или SockJS) явно указывает неавтоматическое удаление, но мы вылили его из источника и исключили.
Итак, вопрос в миллион долларов: как мы можем автоматически удалить очередей с StompJS? Пожалуйста, довольно пожалуйста, и спасибо заранее :)
Пример регистрации
function reg(dest, callback, headers){
stomp.subscribe(dest, callback, headers);
}
function cb(payload){
console.log(JSON.parse(payload.body));
}
reg('/queue/foobar', cb, {});
детали установки RabbitMQ 3.5.2 и 2.3.3 StompJS
** Примечание ** Если я подписываюсь непосредственно на обмен (с такими местами, как/exchange/foo или/topic/foo), обмен будет определяться как автоматическое удаление. Это только очереди, которые не удаляются автоматически.
Какие реалистичные исполнения вы используете, используя stompjs и sockjs? Я вижу несколько из них через google search. –
@DerickBailey хороший звонок. Добавлена информация –
Вы когда-нибудь исправляли это? Я вижу точно такую же проблему. – ajames