Какие библиотеки HornetQ мне нужны для клиента JMS?
У меня есть автономный сервер Hornetq и клиент JMS, работающий с ним! Что касается руководства пользователя hornetq, я должен добавить только jnp-client.jar и jms.jar в classpath клиента. Но когда я пытаюсь использовать сервер hornetq (генерировать и потреблять сообщения), выдается несколько исключений ClassNotFoundExceptions, поэтому я принудительно добавил эти файлы jar в мой клиентский путь к классу:
1. jms 2. jnp-клиент 3. hornetq-jms-клиент 4.NETty 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 ответа
По документам...
Если вы используете только чистый клиент 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 тоже.
HornetQ-JMS-Client - это адаптер для HornetQ-Core-Client, который предоставляет JMS API. Таким образом, вы нуждаетесь в них обоих.
А HornetQ-Core-Client нужен внутренний netty, так что вам нужен и этот.
Не уверен насчет jboss-common. Вам нужна некоторая зависимость от журналирования, но я не помню, какая именно.
Обратите внимание, что, в отличие от SOAP, JMS - это API, а не протокол. Остальная часть приложения не зависит от поставщика API, но вам нужны правильные клиентские библиотеки, которые понимают пользовательский протокол, который использует ваш JMS-сервер. Так, например, вы не можете использовать JMS-клиент HornetQ для подключения к ActiveMQ.