【问题标题】:Connect to a local ActiveMQ Artemis queue in JBoss EAP 7.3在 JBoss EAP 7.3 中连接到本地 ActiveMQ Artemis 队列
【发布时间】:2021-03-15 13:34:24
【问题描述】:

我们正在 JBoss EAP 7.3 中创建 ActiveMQ Artemis 队列,并从使用 Spring Boot 开发的远程应用程序调用它们。到目前为止,我们使用协议http-remoting 连接到远程ActiveMQ Artemis,我们使用连接工厂jms/RemoteConnectionFactory。这组配置工作正常。

现在我们将在创建队列的同一 JBoss 服务器中部署 Spring Boot 应用程序,我们需要在本地而不是远程访问队列。为了在本地访问队列,我们​​将连接工厂更改为jms/ConnectionFactory。谁能建议我在本地访问队列而不是http-remoting需要使用什么协议?

【问题讨论】:

    标签: spring-boot activemq-artemis jboss-eap-7


    【解决方案1】:

    在同一 JVM 中通过 JNDI 访问资源时,您无需在 InitialContext 属性中指定任何内容。空的InitialContext 将自动填充必要的信息以查找本地资源。

    如果您出于某种原因必须配置 JNDI 属性,那么您可以简单地将 java.naming.factory.initial 设置为 org.wildfly.naming.client.WildFlyInitialContextFactory。不需要其他任何东西。

    【讨论】:

    • 我们正在从 Spring bean 的属性文件中读取属性。为了访问远程队列,我们​​提供了属性,我们将不得不使用相同的代码,因为我们希望使代码可重用于访问本地和远程队列。所以我们必须在属性文件中提供信息。所以如果我知道默认值会更好
    • 为什么不简单地检查 JNDI 属性是否存在,如果它们不存在,那么只需在您的应用程序中执行 new InitialContext()(即没有属性)?
    • 实际上我将无法修改代码,因为它还将用于连接到远程队列
    • 我不太明白你在说什么。如果您的属性文件中不存在特定的 JNDI 属性怎么办?你会得到一个NullPointerException?
    • 我将粘贴用于创建 bean 的 spring XML 并将修改问题以包含更多细节,请给我一天的时间。如果需要,将重新打开一个新线程
    猜你喜欢
    • 2020-02-24
    • 2022-08-10
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多