2017-02-03 15 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

更新
私はAzureの構成プロパティを通して見ていました。
受信エンドポイントを設定するときにMaxConcurrentCallsとPrefechCountを設定できます。
この仕事

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

旧答え
は、特定のAZUREべきではありませんが、RabbitMQの上で、私は、例えばコンフィギュレータオブジェクト にUseConcurrencyLimitを呼び出すことにより、最大同時消費者を設定します

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

Azureコンフィグレータには何か類似点はありますか?

+0

申し訳ありませんが、Azure用のものはありません。 busConfigurator.MaxConcurrentCalls = 1のような上記の設定だけです。 – Bigtoe

+0

うまくいけば、私はMTコードをダウンロードして同じものを見つけました。これが設計であるかどうかはわかりません。私はGitHubのプロジェクトに問題をポップし、そこから何が出てくるのかを見てみましょう。 – Bigtoe

+2

設計上、各受信エンドポイントには独自の設定があります。 –

関連する問題