// 接口
public interface MessageCallback{
/**
* 消息处理成功后的处理
*/
void onSuccess(String messageId);
/**
* 消息处理失败后的处理
*/
void onFail(Exception e, String messageId);
}
// 抽象类
public abstract class AbsActiveMQMessageProducer implements MessageCallback{
public void sendMessage(QMessage message){
try{
//TODO 发送消息...
//消息发送成功后进行处理
onSuccess(message.getMessageId());
} catch(Exception e){
log.error("send message error:{}", e);
//消息发送失败是进行的处理
onFail(e, message.getMessageId());
} finally {
//TODO 释放连接
}
}
}
// 实现类
public class ActiveMQMessageProducer extends AbsActiveMQMessageProducer{
//TODO 省略...
/**
* 事务消息处理成功后的处理
* 事务消息处理成功,从消息表中删除对应的消息
*
* @param messageId 消息id
*/
public void onSuccess(String messageId) {
log.info("tx message--{}--commit success", messageId);
//事务消息处理成功后,删除数据库中对应的消息
qMessageService.deleteQMessage(messageId);
}
/**
* 事务消息处理失败后的处理
* 事务消息处理失败户,进行日志相关记录
* 或者其他相关数据库操作
*
* @param e 消息发送异常
* @param messageId 消息id
*/
public void onFail(Exception e, String messageId) {
log.error("send tx message:{} ,error:{}", messageId, e.getMessage());
}
//TODO 省略...
}