MassTransit: ручной Ack и NoAck - PullRequest
       18

MassTransit: ручной Ack и NoAck

0 голосов
/ 08 июля 2019

У меня проблема с пониманием;У меня есть несколько клиентов, прослушивающих одну и ту же очередь, сообщение содержит идентификатор назначения клиента, все клиенты получили это сообщение, но когда этот идентификатор распознается конкретным клиентом, только в этом случае его следует удалить из очереди (ack),иначе должно остаться (ноак).Я пытался создать исключение на 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();
    }
}

Извините, если я пишувозможно дублирование, но я не нашел решений за многие дни.

...