В Wildfly 9 есть способ приостановить только определенный MDB
Я могу позвонить :suspend и :resume из cli, однако это приостанавливает все bean-компоненты (EJB, MDB). Есть ли способ только приостановить MDB-компоненты, управляемые сообщениями?
В моем приложении вся работа приходит через сообщения. Если я смогу приостановить прием сообщений, я могу быть уверен, что остальная часть системы продолжит работать, пока вся незавершенная работа не будет завершена. Например, если EJB пытался поместить сообщение в очередь, он сможет это сделать.
1 ответ
Вы можете использовать следующие операции CLI на MDB. Для получения дополнительной информации см. https://docs.jboss.org/author/display/WFLY10/Message+Driven+Beans+Controlled+Delivery. Хотя документация для WildFly 10; это также работает с WildFly 9.x
Для автономного режима:
[standalone@localhost:9990 /] cd deployment=jboss-helloworld-mdb.war/subsystem=ejb3/message-driven-bean=HelloWorldMDB
[standalone@localhost:9990 message-driven-bean=HelloWorldMDB] :stop-delivery
{"outcome" => "success"}
[standalone@localhost:9990 message-driven-bean=HelloWorldMDB] :start-delivery
{"outcome" => "success"}
Для режима домена:
Остановить доставку
/host=master/server=default/deployment=helloworld.app.war/subsystem=ejb3/message-driven-bean=HelloWorldMDB:stop-delivery
Начать доставку:
/host=master/server=default/deployment=helloworld.app.war/subsystem=ejb3/message-driven-bean=HelloWorldMDB:start-delivery
Если MDB находится в EJB-банке внутри EAR-файла:
/host=master/server=default/deployment=helloworld.app.ear/subdeployment=helloworld.core.impl.jar/subsystem=ejb3/message-driven-bean=HelloWorldMDB:start-delivery