I have an enterprise application where I have defined around 10 Message-Driven Beans (MDBs), and I would like to activate them only when necessary, keeping them deactivated otherwise. I will do the required configuration in server.xml, ibm-ejb-jar-bnd.xml, and ejb-jar.xml, and I would like to know if there is any flag kind of option to enable/disable the required MDBs.
Sample config shown below,
ibm-ejb-jar-bnd.xml
<message-driven name="channel1TransactedMDB">
<jca-adapter activation-spec-binding-name="jms/channel1MessageMDB" destination-binding-name="jms/channel1Queue"/>
<resource-ref binding-name="jms/ConnectionFactory" name="jms/QueueConnectionFactory"/>
<message-destination-ref binding-name="jms/channel1ReplyQueue" name="jms/ReplyQueue"/>
</message-driven>
<message-driven name="channel2TransactedMDB">
<jca-adapter activation-spec-binding-name="jms/channel2MessageMDB" destination-binding-name="jms/channel2Queue"/>
<resource-ref binding-name="jms/ConnectionFactory" name="jms/QueueConnectionFactory"/>
<message-destination-ref binding-name="jms/channel2ReplyQueue" name="jms/ReplyQueue"/>
</message-driven>
server.xml
<jmsQueue id="jms/channel1Queue" jndiName="jms/channel1Queue">
<properties.wasJms queueName="channel1Queue" />
</jmsQueue>
<jmsQueue id="jms/channel1ReplyQueue" jndiName="jms/channel1ReplyQueue">
<properties.wasJms queueName="channel1ReplyQueue" />
</jmsQueue>
<jmsQueue id="jms/channel2Queue" jndiName="jms/channel2Queue">
<properties.wasJms queueName="channel2Queue" />
</jmsQueue>
<jmsQueue id="jms/channel2ReplyQueue" jndiName="jms/channel2ReplyQueue">
<properties.wasJms queueName="channel2ReplyQueue" />
</jmsQueue>
<jmsActivationSpec id="jms/channel1MessageMDB">
<properties.wasJms destinationRef="jms/channel1MessageMDB" destinationType="javax.jms.Queue" />
</jmsActivationSpec>
<jmsActivationSpec id="jms/channel2MessageMDB">
<properties.wasJms destinationRef="jms/channel2MessageMDB" destinationType="javax.jms.Queue"/>
</jmsActivationSpec>
I have found a workaround in the below link, but would like to know if this feature is available now,
Is it possible to stop an MDB from receiving messages in Liberty Profile?
Expecting a configuration that could activate or deactivate my MDB as and when required.
You can configure the
jmsActivationSpecwithautoStartset to false which will stop the MDB starting automatically. When you have a stopped MDB you can use the ServerEndpointControl MBean toresumethe MDB. You can also useserver resumeto do the same on the command line.