【问题标题】:Migrating to Spring Boot 3 with ActiveMQ "Classic"使用 ActiveMQ \"Classic\" 迁移到 Spring Boot 3
【发布时间】:2022-12-09 22:55:59
【问题描述】:

我正在尝试使用新命名空间 jakarta.xx 而不是 javax.xx 迁移到 Spring Boot 3,但 ActiveMQ“经典”客户端尚未更新且已弃用。有没有办法继续使用旧的 ActiveMQ 客户端?

我尝试了新的 ActiveMQ Artemis 客户端,但它们似乎无法与 ActiveMQ“经典”服务器互操作。 包含旧的 ActiveMQ 客户端会导致无法使用 JMSTemplate 进行配置,因为 JMSTemplate 使用 jakarta.xx 并期望来自 jakarta.xx 的 ConnectionFactory 而不是 javax.xx

编辑:没有用,所以唯一的方法是升级到 artemis。这样,代码库也几乎没有变化。

【问题讨论】:

  • 请记住,Spring Boot 3 使用 Jakarta EE 9,而 Jakarta EE 9 又使用 Jakarta Messaging 3.0,其中包含 ActiveMQ“Classic”不支持的 JMS 2.0 的所有更改。

标签: spring-boot activemq activemq-artemis


【解决方案1】:

正如您所注意到的,没有支持 Jakarta 命名空间 JMS 依赖项的 ActiveMQ 客户端,或者实际上没有支持 JMS 2.0 的 ActiveMQ 客户端,因此您确实需要转移到其他东西,例如 ActiveMQ Artemis 代理和 ActiveMQ Artemis 客户端或 Qpid JMS AMQP 客户端 v2。 1.0 既支持 JMS 2.0 又使用 Jakarta API。

如果您坚持使用 ActiveMQ 5.x,您可以尝试使用确实使用 Jakarata JMS API 的 Qpid JMS v2.1.0 客户端,但您需要小心一些,因为 5.x 代理不支持 JMS 2.0因此 API 的某些部分可能会触发意外行为。 5.x 代理中的 AMQP 支持不像 Artemis 代理那样完全集成和 JMS 2.0 感知,因此您可能会遇到如果转移到 Artemis 代理就不会看到的问题。

编辑:没有用,所以唯一的方法是升级到 artemis。这样,代码库也几乎没有变化。

【讨论】:

  • 感谢您的详细解释。我仅将 ActiveMQ 用于发送和接收简单的队列消息。如果我成功连接到 ActiveMQ“经典”服务器,我将尝试 Qpid 并更新我的问题。
  • 确保在 ActiveMQ 配置文件中启用 AMQP 传输连接器并将客户端指向正确的端口(AMQP 默认端口是 5672 用于 TCP,5671 用于 SSL)。
  • 对不起。编辑了错误的评论。我想最干净的解决方案是更新到 spring boot artemis 服务器。
猜你喜欢
  • 2020-07-10
  • 1970-01-01
  • 2023-02-22
  • 2023-01-25
  • 2020-02-25
  • 2023-03-25
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
相关资源
最近更新 更多