2011-01-04 5 views
0

DistributedTxMessageListenerContainerのMaxConcurrentListerenersはそれほど使用されていない可能性がありますか?私は一度に1つのスレッドだけがキューからメッセージを処理できるという印象を持っています。トランザクションが成功すればメッセージはキューから削除されるだけなので、論理的です。または私はここで間違っていますか?MSMQからのMaxConcurrentListenersとRemote Transactional Read

答えて

2

はい、1つのスレッドのみがキューから特定のメッセージを受信できます。
複数のスレッドは、いつでもキューからメッセージを受信できます。
メッセージがキューからトランザクションで受信されると、トランザクションがコミットを打ち切るまで他のすべてのスレッドからメッセージが見えなくなります。
メッセージが異常終了すると、キューにメッセージが再び表示されます(再度表示されます)。コミットすると、メッセージはキューから物理的に削除されます。

乾杯
ジョンBreakwell

+0

うーん、私はまだ同じ問題が残ってるんです。トランザクションの読み取りでは、その時点で1つのスレッドしかメッセージを処理できないという印象があります。したがって、スレッドAは先頭のメッセージを処理します。処理された後、スレッドAまたはスレッドBのいずれかが次のメッセージを処理します。並行処理は行われません。 –

+0

パフォーマンスに問題がありますか? シングルスレッドの印象を与えるものは何ですか? –

+0

複数のメッセージがキューにある場合、2つのスレッドであっても、それらが同時に処理されるのではなく、順番に処理されることがわかります。 –