【问题标题】:Not able to configure JMS 2.0, ActiveMQ 5.x, and Karaf无法配置 JMS 2.0、ActiveMQ 5.x 和 Karaf
【发布时间】:2019-02-22 16:30:38
【问题描述】:

我一直在尝试在 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代理。因此,我尝试了jms:info jms/demo.consumer。但是,我一直收到以下错误消息:

Error executing command: JMS 2.0 is not supported by ActiveMQ

我尝试过更改版本,也尝试过新的 karaf 实例。但是,到目前为止我没有运气。我是否遗漏了一些基本步骤?

【问题讨论】:

    标签: jms activemq apache-karaf


    【解决方案1】:

    pax-jms-activemq 模块支持 ActiveMQ 5.x。命令行工具可能无法工作,因为它调用 ConnectionFactory.createContext() 而不是 .createConnection()。 JMS v2.0 有一些 ActiveMQ 5.x 不支持的特性——基本上是共享持久订阅。

    只要获取 ConnectionFactory 的代码调用 .createConnection() 而不是 .createContext() ,它就可以在 JMS API 2.0 jar 中正常工作。 Java 代码、camel-activemq、camel-jms 等都可以正常工作。

    【讨论】:

    • 好吧,我的场景是使用 pax-jms 来配置代理(ActiveMQ),并与骆驼一起使用。我也查看了 pax-jms-activemq 的来源。你的回答澄清了这些事情。谢谢!
    【解决方案2】:

    错误信息是准确的。 ActiveMQ 5.x 不支持 JMS 2.0。这不是配置问题。它根本没有实施。如果您想从 ActiveMQ 代理获得 JMS 2.0 支持,那么您应该使用ActiveMQ Artemis。值得一提的是,documentation you referenced 正在使用 ActiveMQ Artemis。

    【讨论】:

    • 好的。非常感谢你。那我就和阿耳忒弥斯一起试试吧。
    • @MattPavlovich,我的答案的哪一部分不正确? ActiveMQ 5.x 是否支持 JMS 2.0?也许我误解了这个问题,但似乎他在询问使用 JMS 2.0 和 ActiveMQ 5.x。环境中的某些东西显然正在尝试使用 JMS 2.0。
    猜你喜欢
    • 2019-05-10
    • 2015-12-13
    • 1970-01-01
    • 2019-10-06
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多