2017-02-03 2 views
1

Azure에서 MassTransit에 문제가 있고 버스에서 MaxConcurrentCalls을 구성하고 있습니다. 한 번에 1 개의 메시지 실행을 요구하는 프로세스가 있지만 버스 구성을 사용하여이를 수행 할 수는 없습니다. 는 버스를 구성하는 동안 예를 들어 나는 내가 내 소비자를 등록한 후Masstransit Azure의 MaxConcurrentCalls 설정이 무시되었습니다.

busConfigurator.MaxConcurrentCalls = 1; 
busConfigurator.PrefetchCount = 0; 

다음, 나는 즉시 엔드 포인트 3 메시지를 보낼 설정하고, 3 개 소비자 인스턴스를 즉시 생성 및 처리를 시작합니다. Log4Net의 로그 조각입니다.

다른 사람들이이 문제를 경험하고 어떻게 해결했는지, 내가 잘못하고있을 수있는 아이디어가 있는지 궁금합니다. 아래의 로그에서 볼 수 있듯이이 메시지는 각 메시지가 처리되는 데 약 10-15 초가 걸리지 만 즉시 실행되기 시작합니다.

[2017-02-03 16:48:18,410] [DEBUG] [13] [svcbus.Consumers.SellerPageConsumer] [Consume] [] [Loading page https://....... ]  
[2017-02-03 16:48:18,410] [DEBUG] [14] [svcbus.Consumers.SellerPageConsumer] [Consume] [] [Loading page https://....... ]  
[2017-02-03 16:48:18,420] [DEBUG] [23] [svcbus.Consumers.SellerPageConsumer] [Consume] [] [Loading page https://....... ]  

답변

1

업데이트
이 나는 ​​푸른 구성 특성을 통해 살펴했다.
수신 엔드 포인트를 구성 할 때 MaxConcurrentCalls 및 PrefechCount를 설정할 수 있습니다.
해야 작업

configurator.ReceiveEndpoint(host,"QueueName", re => 
{ 
    re.MaxConcurrentCalls = 1; 
    re.PrefetchCount = 1; 
    //configure consumers & other stuff here ... 
}); 

올드 대답은
푸른 안됨하지만, RabbitMQ에 나는 구성자 객체 예에 UseConcurrencyLimit를 호출하여 최대 동시 소비자를 설정

bus = MassTransit.Bus.Factory.CreateUsingRabbitMq(configurator => 
{ 
    configurator.UseConcurrencyLimit(options.MaxConcurrentConsumers); 
    . . . 
} 

Azure 컨 피규 레이터와 비슷한 것이 있습니까?

+0

죄송합니다. 하늘을 나는 곳은 없습니다. 위와 같이 busConfigurator.MaxConcurrentCalls = 1과 같은 설정 만합니다. – Bigtoe

+0

그래도 효과가 있었는데, MT 코드를 다운로드하고 동일한 코드를 찾았습니다. 이것이 의도적인지 아닌지 잘 모르겠습니다. 나는 GitHub에서 프로젝트에 문제를 일으키고 그로부터 나오는 것을 보게 될 것이다. – Bigtoe

+2

의도적으로 각 수신 끝점에는 자체 구성이 있습니다. –