2016-12-20 4 views
2

スキップされたキュー(mtSubscriber_creditAuthRequest_queue_skipped)に応答メッセージ(CreditAuthorizationResponse)が表示される理由を理解できますか?送信者は期待通りに応答を受信して​​いますが、スキップされたキューにも移動しています。スキップされたキュー内のメッセージの取得

私はスキップされたキューに入るメッセージを除き、期待どおりに動作している以下の消費者が、作成しました:

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}."); 
    } 
} 
を:私は要求を送信していますのはここ

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}"); 
    } 
} 

です私は私のクライアント・サイド・バスを初期化してるのはここ

は次のとおりです。私は初期だのはここ

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}"); 
      }); 
     }); 

    }); 
} 

です私のサービス・サイド・バスをizing:

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)); 
     }); 
    } 
} 
+0

交換バインドを確認してください。 –

答えて

0

アレクセイZimarevは正しかった - 私の応答は(応答キューに加えて)私の要求キューに結合させました。そのバインディングを削除するだけで問題が解決され、戻ってこなかった。ありがとう!

関連する問題