我是这个ActiveMQ的新手。我有这种情况,我有两个ActiveMQ节点,有点像这样:
amq1.url=http://abcd01.xxxxxxxxxxx:8041/api/message/
amq2.url=http://abcd02.xxxxxxxxxxx:8041/api/message/
我希望在我的@PostConstruct
方法中找到这两个节点中的哪一个启动并运行,并使用该URL进一步发送消息。
我已经搜索了很多关于它的内容,我不想在这里使用ActiveMQConnectionFactory
。
有没有办法找到ActiveMQ节点的pingStatus?
任何帮助将不胜感激。
答案 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
响应值。它将是true
或false
。
通常也需要基本身份验证。所以请确保在请求中传递它。