无法配置 JMS 2.0、ActiveMQ 5.x 和 Karaf
Not able to configure JMS 2.0, ActiveMQ 5.x, and Karaf
我一直在尝试在 Apache karaf 中使用 ActiveMQ 设置 pax-jms。以下是我安装的相应版本:
activemq-osgi: 5.15.3
OPS4J Pax JMS * : 1.0.3
Karaf: 4.2.0
JMS API: 2.0.1
这些是我安装的功能:
> feature:repo-add mvn:org.ops4j.pax.jms/pax-jms-features/1.0.3/xml/features
> feature:install pax-jms-activemq pax-jms-config
我可以看到我的配置被正确提取。因此,执行命令 jms:connectionfactories
会显示我配置的连接。
注意:我遵循了 https://ops4j1.jira.com/wiki/spaces/PAXJMS/pages/331350050/Configuration,相信 ActiveMQ 的步骤也类似。
我的配置如下:
jms.url=tcp://localhost:61616
jms.username=system
jms.password=manager
type=activemq
osgi.jndi.service.name=jms/demo.consumer
目前,我只是想测试一下我是否可以从Karaf 查询ActiveMQ broker。因此,我尝试了jms:info jms/demo.consumer
。但是,我一直收到以下错误消息:
Error executing command: JMS 2.0 is not supported by ActiveMQ
我尝试过更改版本,也尝试过新的 karaf 实例。但是,到目前为止我没有运气。我是否遗漏了一些基本步骤?
错误消息是准确的。 ActiveMQ 5.x 不支持 JMS 2.0。这不是配置问题。它根本没有实现。如果您希望 ActiveMQ 代理支持 JMS 2.0,那么您应该使用 ActiveMQ Artemis. For what it's worth, the documentation you referenced 正在使用 ActiveMQ Artemis。
pax-jms-activemq 模块支持 ActiveMQ 5.x。命令行工具可能无法工作 b/c 它调用 ConnectionFactory.createContext() 而不是 .createConnection()。 JMS v2.0 有几个 ActiveMQ 5.x 不支持的特性——基本上是共享持久订阅。
只要获取 ConnectionFactory 的代码调用 .createConnection() 而不是 .createContext(),它就可以与 JMS API 2.0 jar 一起正常工作。 Java 代码、camel-activemq、camel-jms 等都可以正常工作。
我一直在尝试在 Apache karaf 中使用 ActiveMQ 设置 pax-jms。以下是我安装的相应版本:
activemq-osgi: 5.15.3
OPS4J Pax JMS * : 1.0.3
Karaf: 4.2.0
JMS API: 2.0.1
这些是我安装的功能:
> feature:repo-add mvn:org.ops4j.pax.jms/pax-jms-features/1.0.3/xml/features
> feature:install pax-jms-activemq pax-jms-config
我可以看到我的配置被正确提取。因此,执行命令 jms:connectionfactories
会显示我配置的连接。
注意:我遵循了 https://ops4j1.jira.com/wiki/spaces/PAXJMS/pages/331350050/Configuration,相信 ActiveMQ 的步骤也类似。
我的配置如下:
jms.url=tcp://localhost:61616
jms.username=system
jms.password=manager
type=activemq
osgi.jndi.service.name=jms/demo.consumer
目前,我只是想测试一下我是否可以从Karaf 查询ActiveMQ broker。因此,我尝试了jms:info jms/demo.consumer
。但是,我一直收到以下错误消息:
Error executing command: JMS 2.0 is not supported by ActiveMQ
我尝试过更改版本,也尝试过新的 karaf 实例。但是,到目前为止我没有运气。我是否遗漏了一些基本步骤?
错误消息是准确的。 ActiveMQ 5.x 不支持 JMS 2.0。这不是配置问题。它根本没有实现。如果您希望 ActiveMQ 代理支持 JMS 2.0,那么您应该使用 ActiveMQ Artemis. For what it's worth, the documentation you referenced 正在使用 ActiveMQ Artemis。
pax-jms-activemq 模块支持 ActiveMQ 5.x。命令行工具可能无法工作 b/c 它调用 ConnectionFactory.createContext() 而不是 .createConnection()。 JMS v2.0 有几个 ActiveMQ 5.x 不支持的特性——基本上是共享持久订阅。
只要获取 ConnectionFactory 的代码调用 .createConnection() 而不是 .createContext(),它就可以与 JMS API 2.0 jar 一起正常工作。 Java 代码、camel-activemq、camel-jms 等都可以正常工作。