-
1. Clustered HornetQ and ra.xml
ataylor Mar 23, 2011 11:31 AM (in response to ihepda)have a look at the jca remote example
-
2. Clustered HornetQ and ra.xml
ihepda Mar 23, 2011 11:40 AM (in response to ataylor)Yes...
Connection to a remote hornetq work fine but I want connect to a server list.
In hornetq-jms.xml under deploy/hornetq.sar of jboss you can configure:
<connection-factory name="NettyConnectionFactory">
<connectors>
<connector-ref connector-name="cl-1"/>
<connector-ref connector-name="cl-2"/>
</connectors>
<entries>
<entry name="/ConnectionFactory"/>
<entry name="/XAConnectionFactory"/>
</entries>
</connection-factory>
but in the ra.xml I don't find any example to configure with more server
-
3. Clustered HornetQ and ra.xml
ataylor Mar 23, 2011 11:43 AM (in response to ihepda)i dont think thats supported in the current version, altho it is in the next which should be released this week
-
4. Clustered HornetQ and ra.xml
jeroen.v Mar 25, 2011 5:02 AM (in response to ihepda)In 2.1.2 you have to use multicasting if you want to connect to a cluster from JCA.
Only other option available for the JCA is to connect to a single node.
-
5. Clustered HornetQ and ra.xml
ihepda Mar 25, 2011 5:17 AM (in response to jeroen.v)Yes, I tried the multicast and work fine but the performance was bad. A testcase using only a server hornetq employed 11 sec. while with 2 hornetq server in multicast employed 5 min.
Probably the broadcast in the connection catch more time.
-
6. Clustered HornetQ and ra.xml
ataylor Mar 25, 2011 5:39 AM (in response to ihepda)that doesnt seem right, what kind of test was it, multicast is only used for initial discovery so should be no slower, unless your creating a new connection every time
-
7. Clustered HornetQ and ra.xml
ihepda Mar 25, 2011 6:03 AM (in response to ataylor)The product is a "proxy" for intercommunication. It has formed by webservices and MDB.
When start a request there are many producers (web services) and consumers (MDB). When the ws must produce a message use the ConnectionFactory of the JNDI to create the connection/session and resolve the queue.
To test the multicast without the product (that it is more complex) I've write a simple MDB that write out the message and a simple class like producer. The producer resolve the Queue and the ConnectionFactory using the jndi of the jboss server where is present the MDB.
Using the direct connection the time of the connection ConnectionFactory.createConnection() end in 5 ms (circa) while using multicast the time grow to 300/400 ms.
I use an hornetq server in my machine, another one in a VMWare in my machine and a server jboss in another VMWare in my machine.
(I've proposed to execute test in a real environment)
The product must create a new connection every time otherwise how can update servers status? Doesn't it?
The multicast work fine but I must try the cluster without UDP and I don't be able to validate this configuration with hornetq.
-
8. Clustered HornetQ and ra.xml
ataylor Mar 25, 2011 6:21 AM (in response to ihepda)Im guessing you arent using the correct connection factory ("JmsXA") which pools its connections.
-
9. Clustered HornetQ and ra.xml
ihepda Mar 25, 2011 6:59 AM (in response to ataylor)Below my jboss configurations whats wrong?
The hornetq.sar/jms-ds.xml
--------------
<connection-factories>
<!--
JMS Stuff
-->
<mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="hornetq:service=JMSProviderLoader,name=JMSProvider">
<attribute name="ProviderName">DefaultJMSProvider</attribute>
<attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
<attribute name="FactoryRef">java:/XAConnectionFactory</attribute>
<attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute>
<attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute>
</mbean>
<!--
JMS XA Resource adapter, use this to get transacted JMS in beans
-->
<tx-connection-factory>
<jndi-name>JmsXA</jndi-name>
<xa-transaction/>
<rar-name>jms-ra.rar</rar-name>
<connection-definition>org.hornetq.ra.HornetQRAConnectionFactory</connection-definition>
<config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
<config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/DefaultJMSProvider</config-property>
<max-pool-size>20</max-pool-size>
<security-domain-and-application>JmsXARealm</security-domain-and-application>
</tx-connection-factory>
</connection-factories>
----------------
The hornetq.sar/hornetq-jms.xml
----------------
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd">
<connection-factory name="NettyConnectionFactory">
<discovery-group-ref discovery-group-name="dg-group1" />
<entries>
<entry name="/ConnectionFactory"/>
<entry name="/XAConnectionFactory"/>
</entries>
</connection-factory>
<connection-factory name="NettyThroughputConnectionFactory">
<discovery-group-ref discovery-group-name="dg-group1" />
<entries>
<entry name="/ThroughputConnectionFactory"/>
<entry name="/XAThroughputConnectionFactory"/>
</entries>
</connection-factory>
<queue name="DLQ">
<entry name="/queue/DLQ"/>
</queue>
<queue name="ExpiryQueue">
<entry name="/queue/ExpiryQueue"/>
</queue>
....
-----------------
the hornetq-sar/hornetq-configuration.xml
-----------------
<configuration xmlns="urn:hornetq"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
<log-delegate-factory-class-name>org.hornetq.integration.logging.Log4jLogDelegateFactory</log-delegate-factory-class-name>
<bindings-directory>${jboss.server.data.dir}/hornetq/bindings</bindings-directory>
<journal-directory>${jboss.server.data.dir}/hornetq/journal</journal-directory>
<journal-min-files>10</journal-min-files>
<large-messages-directory>${jboss.server.data.dir}/hornetq/largemessages</large-messages-directory>
<paging-directory>${jboss.server.data.dir}/hornetq/paging</paging-directory>
<discovery-groups>
<discovery-group name="dg-group1">
<group-address>239.255.100.100</group-address>
<group-port>9876</group-port>
<refresh-timeout>10000</refresh-timeout>
</discovery-group>
</discovery-groups>
<cluster-connections>
<cluster-connection name="my-cluster">
<address>jms</address>
<discovery-group-ref discovery-group-name="dg-group1"/>
</cluster-connection>
</cluster-connections>
<security-settings>
<security-setting match="#">
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="send" roles="guest"/>
</security-setting>
</security-settings>
<address-settings>
<!--default for catch all-->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
<address-full-policy>BLOCK</address-full-policy>
</address-setting>
</address-settings>
</configuration>
--------------------
the jms-ra.rar/META-INF/ra.xml
-------------------
<connector xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"
version="1.5">
<description>HornetQ 2.0 Resource Adapter</description>
<display-name>HornetQ 2.0 Resource Adapter</display-name>
<vendor-name>Red Hat Middleware LLC</vendor-name>
<eis-type>JMS 1.1 Server</eis-type>
<resourceadapter-version>1.0</resourceadapter-version>
<resourceadapter>
<resourceadapter-class>org.hornetq.ra.HornetQResourceAdapter</resourceadapter-class>
<config-property>
<description>The discovery address</description>
<config-property-name>DiscoveryAddress</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>239.255.100.100</config-property-value>
</config-property>
<config-property>
<description>The discovery port</description>
<config-property-name>DiscoveryPort</config-property-name>
<config-property-type>java.lang.Integer</config-property-type>
<config-property-value>9876</config-property-value>
</config-property>
<outbound-resourceadapter>
<connection-definition>
<managedconnectionfactory-class>org.hornetq.ra.HornetQRAManagedConnectionFactory</managedconnectionfactory-class>
<config-property>
<description>The default session type</description>
<config-property-name>SessionDefaultType</config-property-name>
<config-property-type>java.lang.String</config-property-type>
<config-property-value>javax.jms.Queue</config-property-value>
</config-property>
<config-property>
<description>Try to obtain a lock within specified number of seconds; less than or equal to 0 disable this functionality</description>
<config-property-name>UseTryLock</config-property-name>
<config-property-type>java.lang.Integer</config-property-type>
<config-property-value>0</config-property-value>
</config-property>
<connectionfactory-interface>org.hornetq.ra.HornetQRAConnectionFactory</connectionfactory-interface>
<connectionfactory-impl-class>org.hornetq.ra.HornetQRAConnectionFactoryImpl</connectionfactory-impl-class>
<connection-interface>javax.jms.Session</connection-interface>
<connection-impl-class>org.hornetq.ra.HornetQRASession</connection-impl-class>
</connection-definition>
<transaction-support>XATransaction</transaction-support>
<authentication-mechanism>
<authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
<credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
</authentication-mechanism>
<reauthentication-support>false</reauthentication-support>
</outbound-resourceadapter>
<inbound-resourceadapter>
<messageadapter>
<messagelistener>
<messagelistener-type>javax.jms.MessageListener</messagelistener-type>
<activationspec>
<activationspec-class>org.hornetq.ra.inflow.HornetQActivationSpec</activationspec-class>
<required-config-property>
<config-property-name>destination</config-property-name>
</required-config-property>
</activationspec>
</messagelistener>
</messageadapter>
</inbound-resourceadapter>
</resourceadapter>
</connector>
-------------------