2016-12-20 3 views
2

건너 뛴 대기열 (mtSubscriber_creditAuthRequest_queue_skipped)에 응답 메시지 (CreditAuthorizationResponse)가 표시되는 이유를 이해하는 사람이 있습니까? 보낸 사람이 예상대로 응답을 받고 있지만 건너 뛴 대기열로 이동하고 있습니다.건너 뛴 대기열에있는 메시지 가져 오기

I했습니다 만든 생략 큐에가는 메시지를 제외하고 예상대로 작동 다음 소비자 :

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

    }); 
} 

내가 처음이야 곳이다 : 나는 내 클라이언트 - 사이드 버스 (FSB)를 초기화하고있어 어디 여기

입니다 내 서비스 사이드 버스를 델링 :

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 잘했다 - 내 반응은 (응답 큐에 추가) 내 요청 큐에 결합되었다. 단순히 바인딩을 삭제하면 문제가 해결되고 다시 돌아 오지 않습니다. 감사!

관련 문제