Performance and scalability: MDB in a cluster
I have a Message Driven Bean in an EAR that is to be deployed into a cluster. However, I don't want the MDB to be deployed onto multiple servers (otherwise, it'll process multiple duplicate messages). Is there a way to tell the container that this is not to be clustered? I'm using weblogic. Thanks!
Define the mdb as being sent to a queue, not a topic. A topic will process the message once for every listener. Weblogic has one listener per node in the cluster.
If you define it as being sent to a queue, the message will be processed once and only once, regardless of how many listeners.
To do this, when you create the jms queue through the management console, define it as type queue.
I have done this in weblogic clusters and it works as expected
Weblogic recommends different configuration for MDB clustering. Refer to Progamming MDBs I would say to keep one of the node in a cluster as a fail over and not the load sharing node, if you dont want to use Queue. Otherwise, develop a filter component that allows only one message.