Я пишу кусок кода, который позволит нам:Как удалить сообщение DeadLetter на Azure Service Bus Тема
- Посмотреть список всех мертвых буквенных сообщений, которые существуют в пределах Azure Service Автобусная тема (Peek)
- Исправить и отправить их обратно в тему
- Удалите их из очереди мертвой буквы при повторной отправке.
У меня нет проблем с первыми 2 очками; используя режим приема Peek, я могу показать список сообщений, и мы можем редактировать и повторно отправлять без проблем.
Проблема возникает, когда я хочу фактически удалить сообщение из очереди с мертвой буквой.
Как это сделать при сообщении по уровню сообщений? Мы можем удалить только два сообщения, находящиеся в очереди с мертвой буквой, и оставить остальных для просмотра на более позднем этапе. Вызывает ли вызов .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;
}