MassTransit:手动确认和否确认

时间:2019-07-08 12:09:53

标签: rabbitmq masstransit

我有一个可以理解的问题;我有一些客户端在同一个队列上侦听,该消息包含一个客户端目标标识符,所有客户端都收到了此消息,但是当特定的一个客户端识别了此标识符时,只有在这种情况下,才必须将其从队列中删除(ack),否则必须保留(noack)。我已经尝试在ICosumer上生成异常,但是它不起作用,我不知道如何工作。

client = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
    cfg.AutoDelete = false;
    cfg.Durable = true;
    cfg.Exclusive = false;

    var host = cfg.Host(new Uri($"rabbitmq://{hostname}:{port}"), h =>
    {
        h.Username(username);
         h.Password(password);
    });

    cfg.Publish<MessageModel>(x => { x.ExchangeType = ExchangeType.Direct; });

    cfg.ReceiveEndpoint(host, queueName, e =>
    {
        e.Consumer<MessageConsumer>();

     });
});

client.Start();

消费者:

internal class MessageConsumer : IConsumer<MessageModel>
{
    Task IConsumer<MessageModel>.Consume(ConsumeContext<MessageModel> context)
    {
        throw new MessageNotConfirmedException();
    }
}

很抱歉,如果我写了一个可能的副本,但很多天都没有找到任何解决方案。

0 个答案:

没有答案