ActiveMQ NMS в.NET - как проверить, была ли временная очередь была удалена?

Я интегрировал ActiveMQ NMS с моим веб-сайтом asp mvc, и он по большей части отлично работает, но я столкнулся с кирпичной стеной из-за моей недавней проблемы и не могу понять, насколько я отсутствует, отсутствует поддержка API, или даже недостаток дизайна (возможно, в API)...

Я пытаюсь сделать простую вещь - мне нужно проверить, была ли удалена временная очередь, прежде чем пытаться отправить ей сообщение. Временные очереди удаляются, как только клиент отключается, закрывает браузер и т. Д. Это нормально, потому что именно поэтому я использую временные очереди. однако я сохраняю адресаты на сервере, чтобы можно было отправлять определенные сообщения определенным адресатам, пока они все еще подключены. все работает отлично, пока клиент не покинет / не закроет браузер, что означает, что ActiveMQ удалит временную очередь, и мне нужно прекратить отправку сообщений в эту временную очередь, пока они не переподключатся, потому что, если я попытаюсь, я получу это исключение:

javax.jms.JMSException: целевая временная очередь://ID:WIN-HP6U1SD1FB4-29628-1329687650640-0:1:85 не существует.

что имеет смысл, потому что временная очередь исчезла с тех пор, как они покинули страницу или закрыли браузер. Но вот кикер, который убивает меня - после этого исключения (которое я ловлю) вся система обмена сообщениями выходит из строя! activemq просто больше не отправляет сообщения, пока я не перезапущу его. это кажется абсолютно сумасшедшим, если я не пропускаю что-то очень фундаментальное в том, как я использую это. в основном то, что я не могу понять, это:

1) почему activeMQ отключается, когда пытается отправить сообщение во временную очередь dest, которой не существует?? почему нельзя просто выбросить исключение и продолжить??

2) хорошо, я могу жить с #1, но как я могу проверить, существует ли временная очередь назначения, прежде чем я отправлю ее? ничто в API, кажется, не поддерживает это.

3) если #2 по какой-то безумной причине невозможно, как мне восстановиться после этого исключения jms, которое приводит к сбою всей системы очереди сообщений?

Я бы опубликовал код, но не уверен, что это поможет здесь.

1 ответ

Я думаю, что вы столкнулись с ошибкой NMS, которая была недавно устранена (см. https://issues.apache.org/jira/browse/AMQNET-377). Если вы обновитесь до версии 1.5.5 или выше, у вас должны быть лучшие результаты.

Другие вопросы по тегам