找出哪个Active MQ已启动?

时间:2017-06-02 12:37:08

标签: java spring jms activemq

我是这个ActiveMQ的新手。我有这种情况,我有两个ActiveMQ节点,有点像这样:

amq1.url=http://abcd01.xxxxxxxxxxx:8041/api/message/
amq2.url=http://abcd02.xxxxxxxxxxx:8041/api/message/

我希望在我的@PostConstruct方法中找到这两个节点中的哪一个启动并运行,并使用该URL进一步发送消息。 我已经搜索了很多关于它的内容,我不想在这里使用ActiveMQConnectionFactory。 有没有办法找到ActiveMQ节点的pingStatus? 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

使用failover传输,而不是手动确定哪个ActiveMQ实例已启动。像这样:

public function getDatRev() {
    if ($this->rev) {
        return $this->rev;
    } else {
        return $this->datum;
    }
}

答案 1 :(得分:0)

您可以尝试使用jmx客户端(如jconsole等)访问活动的mq mbeans ...如果您能够在jmx控制台中看到实例的整个mbean库,则表示实例已启动。 默认情况下启用jmx服务(至少在我使用的是5.13.x的版本中)

答案 2 :(得分:0)

您可以通过Jolokia查询经纪人。

对于localhost代理(更改名称/主机以匹配您的配置):

http://localhost:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost

你会得到一个json。解析Value.Slave响应值。它将是truefalse

通常也需要基本身份验证。所以请确保在请求中传递它。