3

スタンドアロンの hornetq サーバーと、それを使用するJMS クライアントがあります。hornetq ユーザーマニュアルに関しては、jnp-client.jarjms.jarのみをクライアント クラスパスに追加する必要があります。しかし、hornetq サーバー (メッセージの生成と消費) を使用しようとすると、いくつかの ClassNotFoundExceptions がスローされたため、これらの jar ファイルをクライアントのクラスパスに強制的に追加しました。

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

jms クライアントの代わりにHornetq コア クライアントを使用していますか?? jmsクライアントに本当に必要なjarファイルは何ですか??

私の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>
4

2 に答える 2

0

HornetQ-JMS-Client は、JMS API を公開する HornetQ-Core-Client のアダプターです。したがって、両方が必要です。

また、HornetQ-Core-Client は内部で netty を必要とするため、それも必要です。

jboss-common については不明です。ロギングの依存関係が必要ですが、どれを正確に覚えていません。

SOAP とは異なり、JMS はプロトコルではなく API であることに注意してください。アプリケーションの残りの部分は API プロバイダーから独立していますが、JMS サーバーが使用するカスタム プロトコルを理解する正しいクライアント ライブラリが必要です。たとえば、HornetQ JMS クライアントを使用して ActiveMQ に接続することはできません。

于 2012-11-06T09:09:33.740 に答える
0

ドキュメントごとに...

純粋な HornetQ Core クライアント (つまり JMS なし) のみを使用している場合は、hornetq-core-client.jar、hornetq-commons.jar、および netty.jar が必要です。

クライアント側で JMS を使用している場合は、hornetq-jms-client.jar および jboss-jms-api.jar も含める必要があります。

これらは、スタンドアロン hornetq ダウンロードの lib ディレクトリ内のファイルを参照します。

CNFも回避するために jnp-client.jar を追加する必要がありました。

于 2015-10-27T16:25:07.253 に答える