在 ActiveMQ 代理不可用时重试建立 JMS 连接
Posted
技术标签:
【中文标题】在 ActiveMQ 代理不可用时重试建立 JMS 连接【英文标题】:Retry to establish a JMS connection while ActiveMQ broker is not available 【发布时间】:2015-09-12 00:44:13 【问题描述】:这是我的场景。我几乎没有安装为服务的 ActiveMQ (JBoss-AMQ) 生产者和消费者。在服务器重启中,处理生产者或消费者服务在 ActiveMQ 代理服务之前启动的这种情况的最佳实践是什么。在这种情况下,生产者/客户端无法建立连接并开始挂起,即使在代理服务启动后也是如此。
这是我的连接创建代码sn-p:
try
connection = connectionFactory.createConnection();
connection.start();
LOGGER.info(STARTED_CONNECTION_WITH_THE_DESTINATION + destinationName);
session = createSession();
destination = session.createQueue(destinationName);
LOGGER.info(CREATED_QUEUE_IN_DESTINATION + destinationName);
if (isImageProcAgent)
consumer = createConsumer();
LOGGER.info(CONSUMER_HAS_BEEN_INITIALIZED);
else
producer = session.createProducer(destination);
LOGGER.info(PRODUCER_HAS_BEEN_INITIALIZE);
catch (MessagingException e)
LOGGER.error(e);
catch (JMSException e)
LOGGER.error(e);
我是 JMS 的新手,非常感谢您的支持。
【问题讨论】:
【参考方案1】:这可以通过配置failover
来实现,正如this document 解释的那样。
根据我的代码 sn-p,我需要的更改:
destination = session.createQueue("failover:"+destinationName);
producer = session.createProducer("failover:"+destination);
【讨论】:
以上是关于在 ActiveMQ 代理不可用时重试建立 JMS 连接的主要内容,如果未能解决你的问题,请参考以下文章
WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 主题消息发布与订阅
WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 主题消息发布与订阅