问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何心跳感知与ActiveMQ服务器的连接状态

发布网友 发布时间:2022-04-19 14:12

我来回答

1个回答

热心网友 时间:2023-07-11 18:07

当我们需要部署一套安全稳定的ActiveMQ时,可以使用集群方式,这需要部署至少两套的ActiveMQ服务,但是如果ActiveMQ整个集群也宕机,这时消息都无法发送,这可怎么办,还好ActiveMQ提供了消息传输监听(transportListener),可以对ActiveMQConnectionFactory添加一个Activemq的消息传输监听,该监听实现 Activemq的TransportListener接口。该接口实现的监听方法有onCommand(),onException(), transportResumed () ,transportInterupted()等监听方法。拥有这些方法就足以实时感知ActiveMQ服务器的状态了,当发现服务器无法连接时,就采取相应措施,如把消息存储在本地,当服务器恢复时再进行发送。
package com.jms.failover;
import java.io.IOException;
import org.apache.activemq.transport.TransportListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ActiveMQTransportListener implements TransportListener{
protected final Logger logger = LoggerFactory.getLogger(ActiveMQTransportListener.class);
/**
* 对消息传输命令进行监控
* @param command
*/
@Override
public void onCommand(Object o) {
}
/**
* 对监控到的异常进行触发
* @param error
*/
@Override
public void onException(IOException error) {
logger.error("onException -> 消息服务器连接错误......");
}
/**
* 当failover时触发
*/
@Override
public void transportInterupted() {
logger.error("transportInterupted -> 消息服务器连接发生中断......");
//这里就可以状态进行标识了
}
/**
* 监控到failover恢复后进行触发
*/
@Override
public void transportResumed() {
logger.info("transportResumed -> 消息服务器连接已恢复......");
//这里就可以进行状态标识了
}
}
<!-- ActiveMQ 连接工厂,用于连接远程broker -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" destroy-method="stop">
<property name="brokerURL" value="${activemq.broker.failover.uri}" />
<property name="userName" value="${activemq.username}" />
<property name="password" value="${activemq.password}" />
<property name="useAsyncSend" value="true" />
<property name="alwaysSessionAsync" value="true" />
<property name="redeliveryPolicy" ref="redeliveryPolicy" />
<property name="prefetchPolicy" ref="prefetchPolicy" />
<!-- 消息传输* -->
<property name="transportListener">
<bean class="com.jms.failover.ActiveMQTransportListener" />
</property>
<property name="dispatchAsync" value="true" />
</bean>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
邯郸自驾游到青岛马壕运河遗址推荐线路 株洲自驾到青岛马壕运河遗址途径地方 梧州回青岛马壕运河遗址要几个小时 石嘴山到青岛马壕运河遗址要多少油钱 可不可以用开水敷脸 开水能不能敷脸 发动机和发电机区别?? 电音之王朴智妍MV的图片? 电音之王mv里跳舞的是谁 自己怎样开网站 怎样把一个网页设置为主页 linux系统如何启动mq ibmmq svrconn 服务器连接通道 能干什么用 为什么rabbit mq 本地服务器不能系统根据配置文件... activemq 一台服务器如何配置多个broker MQ是什么意思? 消息服务器mq可以开发OA中消息推送的功能吗 rabbitmq服务怎样配置调用本地 公司内网连接云端MQ服务器显示未开启,请问怎么设置 如何查看mq服务器连接通道是否启动 在技术架构这块,MQ、Beatsync、MC这三块各含义和... rocketmq单个机器怎么搭建集群在linux MQ的服务器和客户端可以安装在一个电脑的一个系统... 如何搭建WebSphere MQ 群集 在云服务器上搭建了mqtt,为什么手机连接不上mqtt... mqtt 服务器搭建需要用到java吗 什么是MQ? 如何搭建rabbitmq服务器 [ 去白头,缩小毛孔。]~~? 白发如何消除? 头上白头发多怎么办? MQ监控问题 怎么给rabbitmq本地服务器发送消息 c++ 怎样把离线缓存的文件放到华为网盘里 怎么把微信里的小视频用作手机铃声 求解 苹果手机 微信朋友圈的小视频如何保存到手机。 哪位大神可以告知苹果手机微信视频号的视频如何保... 微信铃声上的视频怎么保存到手机 苹果se怎么将微信小视频存到手机 微信朋友圈里的视频怎么下载到苹果手机里保存? 苹果手机要怎样把微信中别人的网址链接中的视频下... 苹果微信mp4文件怎么下载到手机 怎么用拼音拼字? 如何用拼音打字 如何用拼音打出不认识的字? 怎么样用拼音打字的问题 怎样用拼音打出特殊符号 如何用拼音写广东字 如何用拼音特殊符号输入 用拼音怎么写 如何使用键盘拼多音字