JBoss.orgCommunity Documentation
HornetQ provides a simple bootstrap class,
org.hornetq.integration.spring.SpringJmsBootstrap
, for
integration with Spring. To use it, you configure HornetQ as you always
would, through its various configuration files like
hornetq-configuration.xml
,
hornetq-jms.xml
, and
hornetq-users.xml
. The Spring helper class starts the
HornetQ server and adds any factories or destinations configured within
hornetq-jms.xml
directly into the namespace of the Spring
context. Let's take this hornetq-jms.xml
file for
instance:
<configuration xmlns="urn:hornetq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd"> <!--the connection factory used by the example--> <connection-factory name="ConnectionFactory"> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="ConnectionFactory"/> </entries> </connection-factory> <!--the queue used by the example--> <queue name="exampleQueue"> <entry name="/queue/exampleQueue"/> </queue> </configuration>
Here we've specified a
javax.jms.ConnectionFactory
we want bound to a
ConnectionFactory
entry as well as a queue destination
bound to a /queue/exampleQueue
entry. Using the
SpringJmsBootStrap
bean will automatically populate the
Spring context with references to those beans so that you can use them.
Below is an example Spring JMS bean file taking advantage of this
feature:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="EmbeddedJms" class="org.hornetq.integration.spring.SpringJmsBootstrap" init-method="start"/> <bean id="listener" class="org.hornetq.tests.integration.spring.ExampleListener"/> <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="ConnectionFactory"/> <property name="destination" ref="/queue/exampleQueue"/> <property name="messageListener" ref="listener"/> </bean> </beans>
As you can see, the
listenerContainer
bean references the components defined
in the hornetq-jms.xml
file. The
SpringJmsBootstrap
class extends the EmbeddedJMS class
talked about in Section 43.1.2, “JMS API” and the same defaults and
configuration options apply. Also notice that an
init-method
must be declared with a start value so that
the bean's lifecycle is executed. See the javadocs for more details on other
properties of the bean class.