У меня проблема со следующей настройкой:
Приложение Java отправляет сообщения электронной почты в очередь JMS, затем MDB, прослушивающий очередь, получает сообщение электронной почты с помощью метода onMessage, открываетсоединение на SMTP Gmail, отправьте электронное письмо на SMTP и закройте соединение.Выполнение этого для всех сообщений в очереди JMS.
Это прекрасно работает, когда в очереди одновременно находится до 5 сообщений.Все сообщения одновременно обрабатываются 5 различными экземплярами MDB, поэтому у меня 5 одновременных подключений к SMTP-серверу Gmail.Но когда в очереди JMS появляется больше сообщений, я получаю сообщение об ошибке соединения с SMTP-сервером Gmail.Первые 5 сообщений отправляются правильно, но не остальная часть пакета, поэтому другие сообщения теряются, потому что их больше нет в очереди.
Так что мой вопрос: можно ли ограничить количествоЭкземпляр MDB, который будет слушать очередь JMS?Если у меня максимум 5 МБ, то даже если в очереди 1000 сообщений, для очистки очереди потребуется больше времени, но по крайней мере я не потеряю ни одного сообщения.
Любое другое предложение для устраненияэта проблема будет высоко оценена.
Вот версия Jboss:
[Сервер] ID выпуска: JBoss [Trinity] 4.2.3.GA (сборка: SVNTag = JBoss_4_2_3_GAdate = 200807181417)
и конфигурация MDB выглядит следующим образом:
@MessageDriven(activationConfig = {
@ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue" ),
@ActivationConfigProperty( propertyName = "destination", propertyValue = "queue/emailQueue")
})
Вам нужно больше?
Спасибо
РЕДАКТИРОВАТЬ 2011-02-14
Может быть, я все неправильно, желая ограничить количество экземпляров MDB.Я видел конфиг о количестве потоков JMS.Если я ограничу количество тем, которые будут публиковать в MDB, возможно, это решит мою проблему?Будет ли JMS ждать, пока MDB не станет доступным, прежде чем отправлять сообщение снова?Есть ли побочный эффект, чтобы сделать это?Ваш, хотя, пожалуйста.Спасибо
END EDIT