Можем ли мы на некоторое время приостановить обработку сообщений MDB? Например: Jboss 1-развернул MDB для обработки сообщений. Jboss 2:-Bean для сбора информации о пользователе. Если MDB из jboss 1 вызывает bean-компонент в jboss 2 для получения сведений о пользователях. Если это так, когда мы перезапускаем Jboss 2, нам нужно приостановить MDB в jboss 1 до тех пор, пока jboss 2 не включится. Есть ли возможность приостановить MDB, чтобы мы могли избежать сбоя сообщения?
Приостановить обработку сообщения MDB
Ответы (3)
Я сомневаюсь, что вы можете остановить MDB, не останавливая все приложение. Это возможно с Spring JMS, но не с обычными bean-компонентами, управляемыми сообщениями.
Что вы могли бы сделать и, по-видимому, возможно, так это приостановка очереди. HornetMQ дает вам возможность переключить очередь в «режим только получения», хотя я не знаю, доступно ли это через консоль администратора.
В JBoss (4.x и 5.x) вы можете просматривать MDB через консоль JMX и приостанавливать доставку сообщений.
- Перейдите в консоль jmx (
http://yourserver:8080/jmx-console/
, где 8080 — HTTP-порт) - Нажмите
jboss.j2ee
на левой панели. На правой панели найдите и щелкните свой MDB. Обычно это будет выглядеть примерно так
jar=file-containing-your-MDB.jar,name=NameOfYourMDB,service=EJB3
- Чтобы сделать паузу, нажмите кнопку «Вызвать» рядом с «stopDelivery».
- Чтобы возобновить, нажмите кнопку «Вызвать» рядом с «начать доставку».
Вы можете остановить очередь на HornetQ. (Я не уверен насчет JBoss Messaging, но уверен, что вы знаете)
Ищите паузу и возобновление сообщения на консоли JMX.