在 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 连接的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ发送消息

JMS/Active MQ - 代理与消费者重新交付

WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 主题消息发布与订阅

WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 主题消息发布与订阅

WSO2 ESB 5.0.0 配置 JMS 传输(ActiveMQ)- 主题消息发布与订阅

5000 毫秒后无法连接到代理 URL [JMS]