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