// 接口 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 省略... }
面向接口编程随笔
猜你喜欢
转载自ln-software.iteye.com/blog/2334642
今日推荐
周排行