max-beans-in-free-pool of an MDB in a cluster - Weblogic
This is a discussion on max-beans-in-free-pool of an MDB in a cluster - Weblogic ; If I have ...
- a cluster with 3 managed servers in it.
- an application that contains a Message Driven Bean (MDB).
- set max-beans-in-free-pool=1 for the MDB
- deployed that application in the cluster (as opposed to a ...
-
max-beans-in-free-pool of an MDB in a cluster
If I have ...
- a cluster with 3 managed servers in it.
- an application that contains a Message Driven Bean (MDB).
- set max-beans-in-free-pool=1 for the MDB
- deployed that application in the cluster (as opposed to a specific managed server)
What is the max number of concurrent MDB instances I can have in my cluster?
a. 1 - because this is what is defined in the MDB's descriptor
b. 3 - 1 instance per managed server in the cluster
c. Something else.
I only want to have one concurrent instance at cluster level, but have failed
to find any doco that answers this question for me.
I am in design stage, and am thinking of failover/recovery so it is importan to
me to know if the MDB app. can exist inside the cluster or not.
Thanks in advance.
-
Re: max-beans-in-free-pool of an MDB in a cluster
"KSS" wrote in message
news:4002a228@newsgroups.bea.com...
>
> I only want to have one concurrent instance at cluster level, but have
failed
> to find any doco that answers this question for me.
That's interesting, why only one instance across the whole cluster, that
seems to defeat the purpose of the cluster? Clients aren't going to be able
to create these anyway,
> I am in design stage, and am thinking of failover/recovery so it is
importan to
> me to know if the MDB app. can exist inside the cluster or not.
>
I would recommend two things before moving forward since you're making
critical design choices. First how JMS works in a clustered environment:
http://edocs.bea.com/wls/docs81/clus...g.html#1008605 toward
the bottom. Second how clustered EJB works, see above and:
http://edocs.bea.com/wls/docs81/cluster/index.html and how MDBs function in
WLS: http://edocs.bea.com/wls/docs81/ejb/...s.html#1107234
~RU
> Thanks in advance.
-
Re: max-beans-in-free-pool of an MDB in a cluster
Thanks for the pointers.
I only want a single instance of the MDB because I have to retain message sequence.
With more than one instance available in the cluster (and not knowing how the
link between JMS and the MDB is triggered and managed inside WLS cluster) I run
the risk of breaking the message sequence even if the producer and Q are configured
either for FIFO delivery.
Having quickly looked at it, I think that deploying to the server should work
- but with a specific
weblogic.rmi.cluster.CallRouter implementation doing the load-balancing for my
MDB, i.e. always use the same server.
Obviously we will have to try it ...
Thanks again.
KSS
"ryan upton" wrote:
>
>"KSS" wrote in message
>news:4002a228@newsgroups.bea.com...
>
>
>
>>
>> I only want to have one concurrent instance at cluster level, but have
>failed
>> to find any doco that answers this question for me.
>
>That's interesting, why only one instance across the whole cluster, that
>seems to defeat the purpose of the cluster? Clients aren't going to
>be able
>to create these anyway,
>
>> I am in design stage, and am thinking of failover/recovery so it is
>importan to
>> me to know if the MDB app. can exist inside the cluster or not.
>>
>I would recommend two things before moving forward since you're making
>critical design choices. First how JMS works in a clustered environment:
>http://edocs.bea.com/wls/docs81/clus...g.html#1008605 toward
>the bottom. Second how clustered EJB works, see above and:
>http://edocs.bea.com/wls/docs81/cluster/index.html and how MDBs function
>in
>WLS: http://edocs.bea.com/wls/docs81/ejb/...s.html#1107234
>
>
>~RU
>
>
>> Thanks in advance.
>
>
-
Re: max-beans-in-free-pool of an MDB in a cluster
I post my findings in response to my own question.
A MDB will have a max of X instances inside a cluster where the MDB is deployed
to the cluster (and not to specific servers inside the cluster) where X = max-free-beans-in-pool
* no-managed-servers-in-cluster.
This obviously is NOT what I want because this is NOT what I have asked to happen,
but I understand why it happens this way. By deploying to cluster I want the max-beans
to be applicable at cluster level and not at managed server level.
The low-level Cluster API allows specific routing, but CallRouter implementations
are only available for RMI and EJB's with a Home interface, and a MDB does not
have a Home interface, so no help there.
Therefore, the only way I have found to ensure message sequence is to deploy the
MDB to a specific managed server inside the cluster, or to a specific managed
server outside the cluster (depending on what you want and your machine setup).
This obviously raises scalability issues with only horizontal scalability being
available by directing specific message-types to specific queues and then increasing
the number of MDB's that are deployed (one per message type). If the volume of
messages for a specific message-type then increases beyond available capacity
I can not readily see a solution that does not entail a new, or dedicated, machine.
Possible bug?
By writing a single "co-ordinating" MDB that simply calls Service methods in other
classes to process the message, I ran into the problem that I could not deploy
the MDB more thanonce, even though each specific deployment targetted a different
queue. I wrapped the MDB in a "do-nothing" class (to give it a different name)
and then I could deploy OK.
This looks like a hangover from the expecatations of what a developer would want
to deploy when thinking in Entity and Session EJB terms - unfortunately the MDB
does not conform to this way of thinking.
"KSS" wrote:
>
>Thanks for the pointers.
>
>I only want a single instance of the MDB because I have to retain message
>sequence.
>With more than one instance available in the cluster (and not knowing
>how the
>link between JMS and the MDB is triggered and managed inside WLS cluster)
>I run
>the risk of breaking the message sequence even if the producer and Q
>are configured
>either for FIFO delivery.
>
>Having quickly looked at it, I think that deploying to the server should
>work
>- but with a specific
>weblogic.rmi.cluster.CallRouter implementation doing the load-balancing
>for my
>MDB, i.e. always use the same server.
>Obviously we will have to try it ...
>
>Thanks again.
>KSS
>
>"ryan upton" wrote:
>>
>>"KSS" wrote in message
>>news:4002a228@newsgroups.bea.com...
>>
>>
>>
>>>
>>> I only want to have one concurrent instance at cluster level, but
>have
>>failed
>>> to find any doco that answers this question for me.
>>
>>That's interesting, why only one instance across the whole cluster,
>that
>>seems to defeat the purpose of the cluster? Clients aren't going to
>>be able
>>to create these anyway,
>>
>>> I am in design stage, and am thinking of failover/recovery so it is
>>importan to
>>> me to know if the MDB app. can exist inside the cluster or not.
>>>
>>I would recommend two things before moving forward since you're making
>>critical design choices. First how JMS works in a clustered environment:
>>http://edocs.bea.com/wls/docs81/clus...g.html#1008605
>toward
>>the bottom. Second how clustered EJB works, see above and:
>>http://edocs.bea.com/wls/docs81/cluster/index.html and how MDBs function
>>in
>>WLS: http://edocs.bea.com/wls/docs81/ejb/...s.html#1107234
>>
>>
>>~RU
>>
>>
>>> Thanks in advance.
>>
>>
>