我使用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:连接之前曾在工作,突然为空。 任何人都可以向我解释一下这种情况何时发生以及如何解决?
答案 0 :(得分:0)
您的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);
奖励建议:
外部化整个客户端URL,而不仅仅是端口。这将允许您指定多个服务器进行故障转移,重新连接超时参数以及其他需要更改代码的其他客户端连接设置。
除非您真的知道它的作用,否则请不要使用CLIENT_ACKNOWLEDGE。如果您不清楚它的工作原理,那么它会带来很多痛苦。如果要按消息进行确认,请使用ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE。对于非事务处理,请使用Session.AUTO_ACKNOWLEDGE。