powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Конкурентная обработка сообщений из очереди
5 сообщений из 5, страница 1 из 1
Конкурентная обработка сообщений из очереди
    #34640773
Alexey Bo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кофигурация: JBoss 4.0.4.GA + activemq 4.1.1

Столкнулся с таким поведением при работе с очередями:
Вешаю MessageLestener (не MDB), в результате все сообщения обрабатываются последовательно,
т.е. если одна обработка занимает много времени - все другие стоят в очереди. Как можно
заставить очередь доставлять несколько сообщений одновременно?
...
Рейтинг: 0 / 0
Конкурентная обработка сообщений из очереди
    #34640828
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. на кой ляд на JBoss вешать activemq, у него ведь есть свой JMS ?
2. на кой ляд MessageListener (не MDB) если есть JBoss
3. у вас этот Listener работает в одном потоке? код в студию. думаю придётся самостоятельно запускать потоки обработки (или ThreadPool, Executor)

короче MDB и JBoss спасут отца русской демократии
...
Рейтинг: 0 / 0
Конкурентная обработка сообщений из очереди
    #34640922
Alexey Bo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
expp1. на кой ляд на JBoss вешать activemq, у него ведь есть свой JMS ?
2. на кой ляд MessageListener (не MDB) если есть JBoss
3. у вас этот Listener работает в одном потоке? код в студию. думаю придётся самостоятельно запускать потоки обработки (или ThreadPool, Executor)

короче MDB и JBoss спасут отца русской демократии

1. С требованиями не спорим :). А вообще JBoss'овая очередь к некоторым ошибкам очень лояльно относится. Как только на ActiveMQ перешли - они (ошибки) сразу выползли...
2. Не MDB исторически сложился. И кроме того MDB декларативный, и, вроде бы, его нельзя удалять и снова вешать :), а это может потребоваться (пока что чисто теоретически)
3. Если имеется в виду блокирующая/не бокирующая обработка сообщения, то блокирующая.

Вешается листенер:
Код: plaintext
1.
2.
3.
4.
....
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
.......
consumer.setMessageListener( new  DialogListener());
....

собственно код (немного сокращённый) листерера:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 protected   class  DialogListener  implements  MessageListener {
	 public   void  onMessage(Message message) {
		 try  {
			ObjectMessage om = (ObjectMessage) message;
			Object messageObject = om.getObject();

			DialogMessage dialog = (DialogMessage) messageObject;
			.....
			// Блокирующий вызов, вся обработка в этом же треде
			receiveJmsMessage(dialog);

		}  catch  (Exception e) {
			log.error("Error in DialogListener.onMessage()", e);
		}
	}
}
...
Рейтинг: 0 / 0
Конкурентная обработка сообщений из очереди
    #34641011
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2. "исторически", я б заменил на "клинически"... сделать "типа динамическую конфигурацию" можно с пол пинка
3. тут
Код: plaintext
receiveJmsMessage(dialog);
стартуйте новый thread
...
Рейтинг: 0 / 0
Конкурентная обработка сообщений из очереди
    #34641029
Alexey Bo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Конкурентная обработка сообщений из очереди
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]