デッドレターキューからメッセージを読み取り、トランザクションスコープ内の親キューに戻すにはどうすればよいですか。トランザクション?通常は、アトミック操作としてメッセージをあるキューから別のキューに移動するために転送キューを使用しますが、DLQに転送キューがあるとは思わないし、そうであっても転送を処理する問題はありませんキューDLQ!トランザクションスコープ内のデッドレターキューメッセージの再送信
私はこの再提出を安全に行う必要があり、再提出プロセス中にメッセージを失うリスクはありません。
デッドレターキューからメッセージを読み取り、トランザクションスコープ内の親キューに戻すにはどうすればよいですか。トランザクション?通常は、アトミック操作としてメッセージをあるキューから別のキューに移動するために転送キューを使用しますが、DLQに転送キューがあるとは思わないし、そうであっても転送を処理する問題はありませんキューDLQ!トランザクションスコープ内のデッドレターキューメッセージの再送信
私はこの再提出を安全に行う必要があり、再提出プロセス中にメッセージを失うリスクはありません。
Azure Service Busではメッセージの再送信を許可していません。修正されたデータで新しいメッセージを送信する必要があります。 DLQで見つかったメッセージについては、元のメッセージを延期し、コピーを提出し、成功した場合は元のDLQedメッセージを最初に据え置いたときに受信したシーケンス番号で受信して削除することができます。
ServiceBus360では、同様のものがDeferred DLQ featureで実装されています。うまく
それはあなたが調査し、試行錯誤のビットの後、DLQメッセージを再送信することはできません本当ですが、私が見つけた、次の作品:
例です。
using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
// Create new message
var resubmittableMessage = originalMessage.Clone();
// Remove dead letter reason and description
resubmittableMessage.Properties.Remove("DeadLetterReason");
resubmittableMessage.Properties.Remove("DeadLetterErrorDescription");
// Resend cloned DLQ message and complete original DLQ message
await Task.WhenAll(_messageSender.SendAsync(resubmittableMessage), originalMessage.CompleteAsync());
// Complete transaction
scope.Complete();
}