私は次のようなハンドラーを持っています。これは基本的にコマンドに応答し、一連のコマンド全体を別のキューに送信します。
public void Handle(ISomeCommand message)
{
int i=0;
while (i < 10000)
{
var command = Bus.CreateInstance<IAnotherCommand>();
command.Id = i;
Bus.Send("target.queue@d1555", command);
i++;
}
}
このブロックの問題は、ループが完全に完了するまで、ターゲットキューまたは送信キューにメッセージが表示されないことです。誰かが私がこの行動を理解するのを手伝ってもらえますか?
また、以下のようにタスクを使用してハンドラー内でメッセージを送信すると、メッセージがすぐに表示されます。それで、これに関する2つの質問、
- すぐに実行するタスクベースの送信の説明は何ですか?
メッセージハンドラーでタスクを使用することで何か影響はありますか?
public void Handle(ISomeCommand message) { int i=0; while (i < 10000) { System.Threading.ThreadPool.QueueUserWorkItem((args) => { var command = Bus.CreateInstance<IAnotherCommand>(); command.Id = i; Bus.Send("target.queue@d1555", command); i++; }); } }
どうぞよろしくお願いいたします。