我需要哪些HornetQ库用于JMS客户端?

时间:2012-11-06 07:34:04

标签: spring jms hornetq

我有一个独立的hornetq服务器和 JMS客户端使用它!关于hornetq用户手册,我应该只将 jnp-client.jar jms.jar 添加到客户端类路径。但是当我尝试使用hornetq服务器(生成和使用消息)时,抛出了几个ClassNotFoundExceptions,所以我强制将这些jar文件添加到我的客户端类路径中:

1。 JMS  2. jnp-client  3. hornetq-jms-client  网络  5. hornetq-core-cilent  6. jboss-common

我使用 Hornetq核心客户端而不是 jms客户端吗?我真正需要什么jar文件 jms客户端

我的applicationContext.xml:

<!-- JndiTemplate -->
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
        <property name="environment">
            <props>
                <prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
                <prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
                <prop key="java.naming.provider.url">jnp://localhost:1099</prop>
            </props>
        </property>
</bean>

<!-- Connection Factory -->
<bean id="hornetqConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiTemplate" ref="jndiTemplate"/>
        <property name="jndiName" value="/ConnectionFactory" />
</bean>

<!-- Destionation -->
<bean id="annotationDeleteCommandDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiTemplate" ref="jndiTemplate"/>
        <property name="jndiName" value="/queue/command/annotation/deleteQueue" />
</bean>

<!-- Message Listener -->
<bean id="annotationMessageHandler" class="command.messaging.handler.annotation.AnnotationMessageHandler">
        <property name="annotationService" ref="annotationService"/>
</bean>

<!-- Message Listener Container -->
<bean id="annotationDeleteCommandMsgListenerContainer"
      class="org.springframework.jms.listener.DefaultMessageListenerContainer" 
      p:connectionFactory-ref="hornetqConnectionFactory"
      p:destination-ref="annotationDeleteCommandDestination"
      p:cacheLevelName="CACHE_CONSUMER"
      p:messageListener-ref="annotationDeleteCommandMessageHandler"
      p:concurrentConsumers="10"
      p:maxConcurrentConsumers="50"
      p:receiveTimeout="5000"
      p:idleTaskExecutionLimit="10
      p:idleConsumerLimit="5" />

<!-- Message Producer -->
<bean id="messageSender" class="command.messaging.sender.MessageSender">
        <property name="connectionFactory" ref="hornetqConnectionFactory" />
</bean>

2 个答案:

答案 0 :(得分:0)

HornetQ-JMS-Client是用于公开JMS API的HornetQ-Core-Client的适配器。 所以你需要它们。

HornetQ-Core-Client内部需要netty,所以你也需要那个。

不确定jboss-common。你需要一些日志依赖,但我不记得究竟是哪一个。

请注意,与SOAP不同,JMS是API,而不是协议。应用程序的其余部分独立于API提供程序,但您需要正确的客户端库,以了解JMS服务器使用的自定义协议。因此,您无法使用HornetQ JMS客户端连接到ActiveMQ,例如。

答案 1 :(得分:0)

根据文档...

如果你只使用纯粹的HornetQ核心客户端(即没有JMS),那么你需要hornetq-core-client.jar,hornetq-commons.jar和netty.jar。

如果您在客户端使用JMS,那么您还需要包含hornetq-jms-client.jar和jboss-jms-api.jar。

这些是指独立的hornetq下载的lib目录中的文件。

我需要添加jnp-client.jar以避免CNF。