Masstransit 获取跳过队列中的消息

Masstransit 获取跳过队列中的消息,masstransit,Masstransit,有人能帮我理解为什么我在跳过的队列(mtSubscriber\u creditAuthRequest\u queue\u skipped)中收到响应消息(CreditAuthorizationResponse)?发送方正在按预期接收响应,但它们也将进入跳过的队列 我创建了以下使用者,除进入跳过队列的消息外,该使用者正常工作: class CreditAuthorizationConsumer : IConsumer<CreditAuthorizationRequest> {

有人能帮我理解为什么我在跳过的队列(mtSubscriber\u creditAuthRequest\u queue\u skipped)中收到响应消息(CreditAuthorizationResponse)?发送方正在按预期接收响应,但它们也将进入跳过的队列

我创建了以下使用者,除进入跳过队列的消息外,该使用者正常工作:

class CreditAuthorizationConsumer : IConsumer<CreditAuthorizationRequest>
{
    private Func<string, Task> _outputDelegate2;

    public CreditAuthorizationConsumer(Func<string, Task> outputDelegate)
    {
        _outputDelegate2 = outputDelegate;
    } 

    public async Task Consume(ConsumeContext<CreditAuthorizationRequest> context)
    {
        await _outputDelegate2($"Received: {context.Message}: {context.Message.CardNumber}");
        await context.RespondAsync<CreditAuthorizationResponse>(new CreditAuthorizationResponse(true));
        await _outputDelegate2($"Sent CreditAuthorizationResponse for card request {context.Message.CardNumber}");
    }
}

Alexey Zimarev是对的——我的响应被绑定到我的请求队列(除了响应队列之外)。简单地删除该绑定就解决了问题,但它没有回来。谢谢

检查您的exchange绑定,可能您有两个
private async Task SendCreditAuthRequestAsync(int numberToSend)
{
    for (int i = 0; i < numberToSend; i++)
    {
        var cardNumber = generateCardNumber();
        await SendRequestAsync(new CreditAuthorizationRequest(cardNumber), "mtSubscriber_creditAuthRequest_queue");
        await WriteOutputAsync($"Sent credit auth request for card {cardNumber}.");
    }
}
private void InitializeBus()
{
    _messageBus = Bus.Factory.CreateUsingRabbitMq(sbc =>
    {
        var host = sbc.Host(new Uri(hostUriTextBox.Text), h =>
        {
            h.Username("guest");
            h.Password("guest");
        });

        sbc.ReceiveEndpoint(host, "mtSubscriber_creditAuthResponse_queue", endpoint =>
        {
            endpoint.Handler<CreditAuthorizationResponse>(async context =>
            {
                await WriteOutputAsync($"Received: {context.Message}: {context.Message.IsAuthorized}");
            });
        });

    });
}
private void InitializeBus()
{
    _messageBus = Bus.Factory.CreateUsingRabbitMq(sbc =>
    {
        var host = sbc.Host(new Uri(hostUriTextBox.Text), h =>
        {
            h.Username("guest");
            h.Password("guest");
        });

        sbc.ReceiveEndpoint(host, "mtSubscriber_creditAuthRequest_queue", endpoint =>
        {
            endpoint.Consumer(() => new CreditAuthorizationConsumer(WriteOutputAsync)); 
        });
    }
}