Я использую jboss5.1, EJB3.0 и автономное приложение Java, как «абонент»Раствор для Thread.sleep внутри EJB
У меня есть механизм, который публиковать сообщения через JMS тема для абонентов. , когда абонент получает сообщение, ему нужно выполнить несколько операций, пока он не начнет снова прослушивать будущие сообщения.
проблема заключается в том, что если абонент получит сообщение от темы ему необходимо будет получить достаточно назад быстро для прослушивания дальнейших сообщений (иначе он будет не хватать его в случае еще одно сообщение будет опубликовано)
Итак, мое решение - putThread.sleep() в течение нескольких секунд в издателе ejb.
Таким образом, убедитесь, что все подписчики вернулись, чтобы прослушать, прежде чем будет опубликовано новое сообщение.
Я знаю, что использование Thread внутри EJB'S не рекомендуется.
любое решение для этого сценария?
спасибо, луч.
Что вы подразумеваете под «Это будет скучать по нему?» Похоже, у вас проблемы с дизайном, когда вы говорите: «ему нужно будет вернуться достаточно быстро, чтобы ...». Вы почти никогда не можете полагаться на то, что выполнение некоторого кода будет достаточно быстрым. Он должен работать, если требуется 1 мс или 1 час –
Я думаю, вы правы. как бы вы переделали его таким образом, чтобы абонент получал сообщения все время? – rayman
Извините, я не эксперт JMS, поэтому я не знаю, как это работает и какую гипотезу вы можете сделать. Я действительно не понимаю, почему вы пропустили бы какое-либо сообщение. Если вы заняты чем-то другим, сообщение должно быть поставлено в очередь, но не отбрасываться. Вы имеете в виду, что ваш абонент перестает слушать новые сообщения, когда они обрабатывают входящее сообщение, и они начинают снова слушать, когда они будут сделаны? –