Какие библиотеки HornetQ мне нужны для клиента JMS?

У меня есть автономный сервер hornetq и работающий с ним JMS-клиент! Что касается руководства пользователя hornetq, я должен добавить только jnp-client.jar и jms.jar в путь к классам клиента. Но когда я пытаюсь использовать сервер hornetq (создавать и потреблять сообщения), выбрасывается несколько исключений ClassNotFoundException, поэтому я принудительно добавляю эти jar-файлы в путь к классам моего клиента:

1. jms 2. jnp-client 3. hornetq-jms-client 4. netty 5. hornetq-core-cilent 6. jboss-common

Использую ли я основной клиент Hornetq вместо клиента jms?? Какие файлы jar мне действительно нужны для клиента jms??

Мое приложениеContext.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>

person Arya    schedule 06.11.2012    source источник


Ответы (2)


HornetQ-JMS-Client — это адаптер для HornetQ-Core-Client, предоставляющий JMS API. Значит, они нужны вам обоим.

И HornetQ-Core-Client нуждается в netty внутри, так что он вам тоже нужен.

Не уверен насчет jboss-common. Вам нужна какая-то зависимость от ведения журнала, но я точно не помню, какая.

Обратите внимание, что, в отличие от SOAP, JMS — это API, а не протокол. Остальная часть приложения не зависит от поставщика API, но вам нужны правильные клиентские библиотеки, которые понимают пользовательский протокол, который использует ваш JMS-сервер. Таким образом, вы не можете использовать JMS-клиент HornetQ, например, для подключения к ActiveMQ.

person GreyFairer    schedule 06.11.2012
comment
Вам не понадобятся jboss-loggins на клиенте, если вы не хотите иметь конфигурацию ведения журнала на клиенте в стиле jboss. - person Clebert Suconic; 07.11.2012
comment
также он использует весну. Я не уверен, какие зависимости ему понадобятся от весны. - person Clebert Suconic; 07.11.2012

По документам...

Если вы используете только чистый клиент HornetQ Core (т. е. без JMS), вам понадобятся файлы hornetq-core-client.jar, hornetq-commons.jar и netty.jar.

Если вы используете JMS на стороне клиента, вам также потребуется включить hornetq-jms-client.jar и jboss-jms-api.jar.

Они относятся к файлам в каталоге lib автономной загрузки hornetq.

Мне нужно было добавить jnp-client.jar, чтобы избежать CNF.

person teknopaul    schedule 27.10.2015