Жадные потоки захватывают слишком много сообщений JMS в WebLogic - PullRequest
1 голос
/ 21 июля 2010

Мы столкнулись с проблемой в WebLogic 8.1, с которой мы жили, но не могли ее исправить.Мы часто ставим в очередь сто или более сообщений JMS, каждое из которых представляет собой единицу работы.Несмотря на тот факт, что каждое сообщение имеет одинаковый размер и выглядит одинаково, на завершение может потребоваться всего несколько секунд, в то время как следующее представляет 20 минут непрерывного хруста.

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

Теперь мы находимся в точке, когда мы конвертируем в WebLogic 10, поэтому вполне естественно вернуться к этой проблеме и выяснить,есть какое-то решение, которое мы могли бы реализовать так, чтобы: а) каждый поток обрабатывал только одно сообщение JMS за раз и оставлял все остальные ожидающими во входящей очереди, или б) он автоматически перераспределял ожидающие сообщения (даже те, которые уже есть)назначается определенной теме), чтобы освободить темы.Есть идеи?

Ответы [ 2 ]

1 голос
/ 10 февраля 2011

Включите задержку пересылки и введите соответствующее значение. Это приведет к тому, что очередь JMS будет перераспределять сообщения своим партнерам, если они не были обработаны в течение настроенного времени.

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

Есть также несколько проблем с JMS в WebLogic 10 в зависимости от ваших настроек. Вы можете сэкономить много времени и усилий, используя самую последнюю версию MP с самого начала.

0 голосов
/ 05 августа 2011

когда поток находится в состоянии «голодания» после получения ресурсов, которые он может выполнять. Потоки, находящиеся в состоянии голодания, называются «жадными потоками»

...