using System; using System.Threading.Tasks; namespace XYY.TaskTrack.Standard { /// /// 消费者基类,主要是用于统一消费者出现异常时,能通过发送死信队列的方式来捕获及善后处理,而不是因 /// 消费者出现异常时没有ACK导致消息被持久化并重复消费。 /// /// public abstract class BaseConsumer : IBaseConsumer where T : class { public IMQManager _mQManager; public BaseConsumer(IMQManager mQManager) { mQManager = _mQManager; } /// /// 处理消费者出现的异常。当出现异常时,通过该方法发送一条死信消息供后续处理。 /// /// /// protected void PublishDeadMessage(Exception ex, T message) { DeadMessage dealMessage = new DeadMessage { Exception = ex, Message = message }; _mQManager.PublishDeadMessage(dealMessage); } /// /// 消费消息 /// /// public abstract Task Consume(T message); } }