我正在编写一段代码,它可以让我们:
- 查看 Azure 服务总线主题 (Peek) 中存在的所有死信消息的列表
- 修复并将它们发送回主题
- 重新发送时将它们从死信队列中删除。
我对前两点没有意见;使用 Peek 接收模式,我可以显示消息列表,我们可以毫无问题地编辑和重新发送。
当我想从死信队列中实际删除消息时,问题就来了。
我们如何按消息级别对消息执行此操作?我们可能只想删除死信队列中的 2 条消息,并保留其他消息以供稍后查看。调用.Complete()
死信队列中的消息是否会像在主订阅中那样删除它?
以供参考; 这是我们获取SubscriptionClient
死信队列的代码:
private SubscriptionClient GetOrCreateSubscriptionClient(string connectionString)
{
if (!NamespaceManager.TopicExists(_topicName))
{
NamespaceManager.CreateTopic(new TopicDescription(_topicName)
{
MaxSizeInMegabytes = 5120,
DefaultMessageTimeToLive = TimeSpan.FromSeconds(DEFAULT_LOCK_DURATION_IN_SECONDS)
});
}
if (!NamespaceManager.SubscriptionExists(_topicName, _subscriptionName))
{
NamespaceManager.CreateSubscription(_topicName, _subscriptionName);
}
var deadLetterPath = SubscriptionClient.FormatDeadLetterPath(_topicName, _subscriptionName);
var client = SubscriptionClient.CreateFromConnectionString(
connectionString, deadLetterPath, _subscriptionName, ReceiveMode.PeekLock);
return client;
}