私のアプリケーションのボトルネックは、MassTransitを使用してMSMQでメッセージを送受信しています。送信と受信の両方が同じアプリケーション内で起こっていますが、メモリ内のキューを使用するにはメッセージが多すぎます。ここでMSMQからのメッセージの受信をどのように高速化できますか?
は私の単純なキューの設定です:私の実験のために
messageBus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.VerifyMsmqConfiguration();
sbc.UseMulticastSubscriptionClient();
sbc.ReceiveFrom("msmq://localhost/msg_queue");
sbc.Subscribe(subs =>
{
subs.Handler<EventMessage>(msg => Enqueue(msg));
});
});
、MSMQは、現在〜100万件のメッセージを持っており、我々はそれに新しいメッセージをプッシュされていません。 Enqueue()
でメッセージを送信する時間以外の作業は行っていません。
この情報を使用すると、ネットワークの待ち時間がない場合でも、少なくとも1000件のメッセージが表示されることを期待したときに、MSMQから毎秒150〜200件のメッセージしか取得できません。各メッセージは< 2kbです。
キューでメッセージの順序を維持しながら、MSMQがMassTransitを介してアプリケーションにメッセージをどのくらい迅速に渡すかをスピードアップできますか?
あなたはすでにこれを経験しているかもしれませんが、[ここをクリック](http://support.microsoft.com/kb/199428)。私たちはWebsphere MQを使用して、おそらくMSMQで今何を得ているのかを知ることができます。 –
あなたの1,000メッセージ/秒の希望は何に基づいていますか? –
現在、未処理のメッセージが100万個*のバックログを持っていて、奇跡を期待していない場合、それらのデータストアは相当なものです。 MSMQは、毎秒何千ものメッセージを処理するのに問題はありません。キューブをパージして合理的な出発点に戻すのは、これまでのところ悪いことでした。 –