Ryan Hochstetler [
http://community.jboss.org/people/ryanhos] created the discussion
"Configuring ClusteredConnectionFactory on heterogeneous cluster"
To view the discussion, visit:
http://community.jboss.org/message/594555#594555
--------------------------------------------------------------
We have a 40+ node JBoss cluster with 4 distinct +server types+ in the cluster (for
simplicity, assume 4 types * 10 instances each). The server types all handle different
jobs, but need to share some queues, so we have JMS clustered between them. Last week, we
exhausted the JMS client pool (*JBM_clientMaxPoolSize*) on one of the servers, so wrote
some logic in our provisioning software that builds the 40 nodes to calculate the exact
number (plus a margin) needed by each server type, and substitute that value in
remoting-bisocket-service.xml.
Server Type A:
<attribute name="JBM_clientMaxPoolSize"
isParam="true">235</attribute>
Server Type B:
<attribute name="JBM_clientMaxPoolSize"
isParam="true">180</attribute>
..and so forth.
The next time I booted, I got this error from ConnectionFactoryJNDIMapper:
"[ERROR] [org.jboss.messaging.util.ExceptionUtil] -
org.jboss.jms.server.connectionfactory.ConnectionFactory@a605722 startService
java.lang.IllegalArgumentException: The remoting locator configuration for a particular
clustered connection factory must be the same on each node in the cluster. We have
detected that the configuration differs on this node. Please correct and redeploy the
connection factory"
This indicates to me that the invoker locator string for a clustered connection factory
must be the same throughout the cluster (I imagine because this aids in providing failover
to a matching locator elsewhere in the cluster. The JBM_clientMaxPoolSize is part of the
invoker locator string because JBoss Messaging ships remoting-bisocket-service.xml with
the +isParam+ attribute set to true on that particular XML element.
So, my question is this: How do I tune the JBM_clientMaxPoolSize for the non-clustered
connection factory per server type, and at the same time allow the clustered connection
factory to still function? Do I set isParam="false" on that attribute so that
it doesn't end-up in the invoker locator string (why does the client need this
information anyway)? Do I add annother identical, but differently-named
org.jboss.remoting.transport.Connector MBean configuration, with the same value for
JBM_clientMaxPoolSize across the entire cluster, and then modify the
jboss.messaging.connectionfactory:service=ClusteredConnectionFactory MBean configuration
in connection-factories-service.xml to point at the new homogenous Connector? I assume
that the new connector would require it's own port and binding-service information; is
this correct?
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/594555#594555]
Start a new discussion in JBoss Messaging at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]