Сколько сообщений может быть поставлено в очередь в теме JMS? - PullRequest
3 голосов
/ 11 мая 2011

Для моего веб-приложения у меня есть тема JMS, которая получает много сообщений в любой момент времени.У меня есть MDB, который обрабатывает сообщения и обновляет базу данных на основе данных сообщений.Я получал org.hibernate.exception.LockAcquisitionException, когда тема получала несколько сообщений одновременно, поэтому я изменил атрибут maxSessions для MDB на 1 и сделал его одиночным.

Теперь я больше не вижу исключений Hibernate, но у меня есть опасения по поводу производительности.Насколько большим я могу ожидать, чтобы получить тему, прежде чем я начну видеть проблемы?Я использую JBoss 4.3 EAP, и я пытался найти, как это настроить, но ничего не получилось.Будет ли размер темы расти до тех пор, пока у Java не будет нехватка памяти или это можно будет настроить в JBoss?

Ответы [ 2 ]

1 голос
/ 11 мая 2011

По умолчанию JBoss Messaging хранит свои сообщения во встроенной гиперзвуковой базе данных. Если ваша тема начинает заполняться, потребление памяти не должно увеличиваться линейно, но рано или поздно база данных заполнится (насколько я помню, Hypersonic имеет ограничение в 40000 строк, по крайней мере, в этой конфигурации).

В целом, если вы создаете сообщения быстрее, чем потребляете их, у вас есть проблема. Вам необходимо либо создавать их медленнее, либо потреблять их быстрее, либо выработать способ отбрасывания сообщений.

0 голосов
/ 11 мая 2011

Сколько сообщений может быть поставлено в очередь в теме JMS?

Зависит от доступной памяти или дискового пространства, будет зависеть от поставщика JMS и конфигурации очереди.

Но что касается исключительно производительности обновления базы данных, вам следует выполнить пакетную обработку.(Даже с одной нитью).Одновременно получайте X-сообщения, обрабатывайте их все и отправляйте пакетное обновление в базу данных, используя ту же транзакцию.Скорее всего, ваша база данных может обновлять / обновлять 100 или 1000 строк почти за то же время, что и 1 строка.

Кстати, вас вообще беспокоит производительность?Это сейчас слишком медленно?

...