我正在编写一个从队列使用的JMS客户端.如果重要,我的经纪人为activemq.
一个要求是即使代理关闭,客户端也应该启动.在那种情况下,它应该表现得好像队列中没有消息,并且一旦代理启动并开始出现消息,它就会相应地表现.
问题是在我的代码中:
connectionFactory = new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start()
如果代理关闭,则它将卡在connection.start()中.虽然我想拥有的是connection.start(),使其静默返回并继续尝试在后台连接,并在可能的情况下使用消息,而在不可行的情况下保持安静.
我该如何实现.
解决方法:
使用单独的线程从队列中消费数据并启动连接.您将需要使用并发队列实现.
线程1:
>实例化队列
>启动线程2
>尝试连接/阻止
>将消息添加到队列
线程2(或某种类型的池):
>启动客户端
>从队列/块读取
>处理消息