1

I'm using WildlFly 10 CR3 and I have 2 artemis server on a cluster.

Can I use a single MDB to consume on every node of the cluster?.

This is my MDB

@TransactionManagement(TransactionManagementType.CONTAINER)
@MessageDriven(name = "RemoteJMSADuarteConsumer", activationConfig = {
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "connectionFactoryLookup", propertyValue = "java:/jms/remoteCFDP"),              
    @ActivationConfigProperty(propertyName = "destination", propertyValue = "testQueue"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "1"),
    @ActivationConfigProperty(propertyName = "useJDNI", propertyValue = "false"),
    })
public class RemoteJMSADuarteConsumer implements MessageListener {


    public RemoteJMSADuarteConsumer() {
        // TODO Auto-generated constructor stub
    }

    public void onMessage(Message rcvMessage) {
        // Proccesing message
    }

}

This is my standalone.xml

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
        <server name="default">
            <security-setting name="#">
                <role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/>
            </security-setting>
            <address-setting name="#" message-counter-history-day-limit="10" page-size-bytes="2097152" max-size-bytes="10485760" expiry-address="jms.queue.ExpiryQueue" dead-letter-address="jms.queue.DLQ"/>
            <http-connector name="http-connector" endpoint="http-acceptor" socket-binding="http"/>
            <http-connector name="http-connector-throughput" endpoint="http-acceptor-throughput" socket-binding="http">
                <param name="batch-delay" value="50"/>
            </http-connector>
            <remote-connector name="remote-artemis" socket-binding="remote-artemis"/>
            <remote-connector name="remote-artemis-dprato" socket-binding="remote-artemis-dprato"/>
            <remote-connector name="remote-artemis-aduarte" socket-binding="remote-artemis-aduarte"/>
            <in-vm-connector name="in-vm" server-id="0"/>
            <http-acceptor name="http-acceptor" http-listener="default"/>
            <http-acceptor name="http-acceptor-throughput" http-listener="default">
                <param name="batch-delay" value="50"/>
                <param name="direct-deliver" value="false"/>
            </http-acceptor>
            <in-vm-acceptor name="in-vm" server-id="0"/>
            <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
            <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
            <connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm"/>
            <connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector"/>
            <pooled-connection-factory name="activemq-ra" transaction="xa" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="in-vm"/>
            <pooled-connection-factory name="remote-artemis" entries="java:/jms/remoteCF" connectors="remote-artemis"/>
            <pooled-connection-factory name="remote-artemis-dprato" entries="java:/jms/remoteCFDP" connectors="remote-artemis-dprato"/>
            <pooled-connection-factory name="remote-artemis-aduarte" entries="java:/jms/remoteCFAD" connectors="remote-artemis-aduarte"/>
        </server>

I have 2 PooledConnectionFactories to this example

  • remote-artemis who connect to the first artemis server node
  • remote-artemis-aduarte who connect to the second artemis server node

I'm trying to configure my MDB to validate if the first node queue is empty look after the next node... Is that possible?

Petter Nordlander
  • 22,053
  • 5
  • 50
  • 84
Ant'
  • 11
  • 3

0 Answers0