2017-02-21 7 views
0

EasyNetQのラッパーを作成して、RabbitMQにメッセージを公開しています。公開する必要のあるメッセージが多数あります。 IBusを使用してメッセージをパブリッシュするためにパターンを使用すべきか、IBusタイプvarをクラス・レベルの静的varとして宣言する必要がありますか?アプリケーション終了時に破棄しますか?EasyNetQメッセージパブリッシャーパターン

using (IBus bus = RabbitHutch.CreateBus(rabbitMQConnectionString)) 
{ 
bus.publish("ss"); 
} 

おかげ

+0

これは主に意見に基づく質問であり、正解がなく、文脈にもよります。 静的バスを作成するか、そうでない場合にインスタンス化するかをアプリケーションに選択させてみませんか? –

+0

公開する必要のあるメッセージが多数あります。私は主に、IBusインスタンスを何度も作成して廃棄することに懸念しています。一方、IBus型のvarを静的なクラスレベルメンバとして作成すると、並行性の問題が心配です。私はロックを適用することができますが、それはパフォーマンスに影響を与えます –

+0

なぜ並行処理は、メッセージキューがうまくいけば心配ですか?キューからのメッセージは、サブスクライブするアプリケーションによって一度だけ取り出されます。バス・インスタンスをロックしても、アプリケーションが同じメッセージを何度も送信することはありません。 –

答えて

2

あなたはあなたのアプリケーションのための単一のIBusインスタンスを作成し、アプリケーションが終了した時に処分しなければなりません。これは、RabbitMQへの単一の接続を作成するためのもので、スレッドセーフです。