【问题标题】:ActiveMQ Connection is not workingActiveMQ 连接不工作
【发布时间】:2018-07-17 08:29:16
【问题描述】:

我使用 ActiveMQConnectionFactory 创建了 ActiveMQ 连接,

connectionFactory = new ActiveMQConnectionFactory("nio://0.0.0.0:" + activeMqPort);
connection = connectionFactory.createConnection();
connection.start();

稍后我会使用连接来获取会话:

Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

从 Connection 创建会话时,它会失败并返回 NullPointerException(连接为空),

PS:连接之前工作,突然它为空。 谁能向我解释一下什么时候会发生这种情况以及如何解决这个问题?

【问题讨论】:

  • 您能否将完整的代码示例粘贴到您使用连接的位置,然后连接为空?

标签: jms activemq


【解决方案1】:

对于客户端连接,您的 URI 不正确。 nio:// 只和服务端相关,指定“0.0.0.0”是服务端用来指示服务端监听所有ip接口的。

尝试使用此方法连接到与此客户端代码在同一台计算机上运行的 ActiveMQ 服务器:

connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:" + activeMqPort);
connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);

奖励建议:

  1. 外部化整个客户端 URL,而不仅仅是端口。这将允许您指定多个服务器进行故障转移、重新连接超时参数和其他需要更改代码的客户端连接设置。

  2. 除非您真的知道它的作用,否则不要使用 CLIENT_ACKNOWLEDGE。如果你不清楚它是如何工作的,它就会成为很多痛苦和痛苦的根源。如果您想要按消息确认,请使用 ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE。对于非交易,使用 Session.AUTO_ACKNOWLEDGE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2012-12-22
    • 2018-08-08
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多