<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd">
<spring:bean name="connectionFactory" class="org.hornetq.jms.client.HornetQConnectionFactory">
<spring:constructor-arg>
<spring:bean class="org.hornetq.api.core.TransportConfiguration">
<spring:constructor-arg value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory"/>
<spring:constructor-arg>
<spring:map key-type="java.lang.String" value-type="java.lang.Object">
<spring:entry key="port" value="5445"></spring:entry>
</spring:map>
</spring:constructor-arg>
</spring:bean>
</spring:constructor-arg>
</spring:bean>
<jms:connector name="hornetq-connector" username="guest" password="your-password"
specification="1.1" connectionFactory-ref="connectionFactory" />
</mule>
HornetQ integration
To integrate with HornetQ you have to configure a connection factory in Spring and reference it when creating the JMS connector. The configuration differs depending if you want to connect to a stand-alone instance of HornetQ or one that is set up as a cluster.
Connecting to a Single HornetQ Instance
Connecting to a HornetQ Cluster
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd">
<spring:bean name="connectionFactory" class="org.hornetq.jms.client.HornetQConnectionFactory">
<spring:property name="discoveryAddress" value="231.7.7.7"/>
<spring:property name="discoveryPort" value="9876"/>
<spring:property name="discoveryRefreshTimeout" value="1000"/>
<!-- If you want the client to failover when its server is cleanly shutdown -->
<spring:property name="failoverOnServerShutdown" value="true"/>
<!-- period in milliseconds between subsequent reconnection attempts. The default value is 2000 milliseconds-->
<spring:property name="retryInterval" value="1000"/>
<!-- allows you to implement an exponential backoff between retry attempts -->
<spring:property name="retryIntervalMultiplier" value="2.0"/>
<!-- A value of -1 signifies an unlimited number of attempts. The default value is 0. -->
<spring:property name="reconnectAttempts" value="-1"/>
<!-- interesting for blocked receivers: If you're using JMS it's defined by the ClientFailureCheckPeriod attribute on a HornetQConnectionFactory instance -->
<spring:property name="clientFailureCheckPeriod" value="1000"/>
<!-- allow the client to loadbalance when creating multiple sessions from one sessionFactory -->
<spring:property name="connectionLoadBalancingPolicyClassName" value="org.hornetq.api.core.client.loadbalance.RandomConnectionLoadBalancingPolicy"/>
</spring:bean>
<jms:connector name="hornetq-connector" username="guest" password="your-password"
specification="1.1" connectionFactory-ref="connectionFactory"/>
</mule>