我有一个 connectionFactory 的 spring-bean 到 hornetQ:
<bean name="connectionFactory" class="org.hornetq.jms.client.HornetQConnectionFactory" >
<constructor-arg value="false" />
<constructor-arg ref="transportConfiguration" />
</bean>
并且,这个 bean 正在使用它:
<bean name="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
</bean>
当“jmsTemlpate”bean 启动时,所有失败并出现异常:
Failed to convert property value of type 'org.hornetq.jms.client.HornetQConnectionFactory' to required type 'javax.jms.ConnectionFactory'
即jmsTemplate 要求 connectionFactory 是 javax.jms.ConnectionFactory,但事实并非如此。
问题、如何以及在何处下载“HornetQConnectionFactory”的正确实现以满足要求。
我在我的 pom.xml 中使用这个 deps:
<hornetq.version>2.2.13.Final</hornetq.version>
...
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-core</artifactId>
<version>${hornetq.version}</version>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-jms</artifactId>
<version>${hornetq.version}</version>
</dependency>
<dependency>
<groupId>org.hornetq</groupId>
<artifactId>hornetq-spring-integration</artifactId>
<version>${hornetq.version}</version>
</dependency>
最佳答案
最好的方法是使用 HornetQJMSClient.createConnectionFactory 方法
您直接使用了该实现,并且可能会发生变化。
HornetQJMSClient 是 API 的一部分,因此在版本之间更好地保持契约。
您应该将示例转换为使用 HornetQJMSClient...
关于您发现这个的博客,也许您应该指出这个问题/答案,因为该博客使用的是内部实现而不是公共(public) API。
关于jms - HornetQConnectionFactory 不是 javax.jms.ConnectionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826238/