Нужна помощь с Java JMS ResourceAllocationException

Я получаю следующую ошибку:

javax.jms.ResourceAllocationException: [C4073]: A JMS destination limit was reached. Too many Subscribers/Receivers for Queue

Настройка была сделана таким образом, что есть один провайдер и два потребителя. Эта ошибка возникает из-за того, что это очередь, и у нее может быть только один поставщик и один потребитель?


person Community    schedule 08.03.2009    source источник


Ответы (2)


Очереди в JMS — это двухточечные механизмы, вы не должны их использовать, если у вас есть несколько потребителей. Вы должны использовать темы для этого.

Опубликуйте полный код, если хотите, чтобы мы могли попытаться помочь больше, поскольку не совсем понятно, что делает ваш код.

Основные концепции JMS http://java.sun.com/products/jms/tutorial/1_3_1-fcs/doc/basics.html

При этом, согласно Sun, вот информация об этой ошибке:

C4073 

Message A JMS destination limit was reached. Too many Subscribers/Receivers for {0} : {1}

{0} is replaced with “Queue” or “Topic” {1} is replaced with the destination name.

Cause The client runtime was unable to create a message consumer for the specified domain and destination due to a broker resource constraint.
person Uri    schedule 08.03.2009

На самом деле вы можете использовать очереди с несколькими потребителями. Темы могут быть не такими, как вы хотите. Тема будет работать как модель публикации/подписки, где каждый потребитель получит копию сообщения; тогда как с очередями поставщик JMS должен отправлять сообщение только одному потребителю.

В вашем провайдере JMS может быть параметр конфигурации, который ограничивает вас одним потребителем на очередь. Я использовал ActiveMQ только для JMS, но он позволяет вам иметь несколько потребителей в одной очереди - он в основном балансирует нагрузку запросов между потребителями.

person Andy White    schedule 09.03.2009