2020-08-15

原文地址:https://www.cnblogs.com/chengtian/p/9059886.html
消费者与处理器执行相似的功能,一个消息消费者可以消费一个或多个消息类型的类

定义消费者

// 消费者
public class UpdateCustomerConsumer : 
    // 处理的消息类型,可以多继承
    IConsumer<YourMessage>
{
    // 处理消息
    public async Task Consume (ConsumeContext<YourMessage> context) {
        await Console.Out.WriteLineAsync ($"Updating customer: {context.Message.Text}");
    }
}

将消费者添加到队列

var bus = Bus.Factory.CreateUsingInMemory (config => {
    // 设置接收队列,队列名 test_queue
    config.ReceiveEndpoint ("test_queue", ep => {
        // 添加消息消费者
        ep.Consumer<UpdateCustomerConsumer> ();
    });
});

Consume方法是异步的,并返回一个task。MassTransit 等待该任务, 在此期间消息对其他接收端点不可用,如果consume 方法成功完成,则消息将被确认并从队列中删除。

如果消费者错误(例如抛出异常,导致Faulted的任务状态),或者以某种方式被取消cancelled(被取消的Canceled任务状态),则异常被传播回管道,在那里消息最终被重试或移动到错误队列

如果端点的配置改变,则可能接收到没有对应消息类型的消费者。如果发生这种情况,则将消息移动到_skipped队列(由原始队列名称前缀)。保留原始消息内容,并添加附加标题来指示移动消息的主机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值