我正在尝试使用CompleteAsync方法通过锁定令牌删除消息,但这并不总是有效。 Сan我通过消息标识符从主题Azure Service Bus中删除消息?
答案 0 :(得分:0)
我认为您正在使用Microsoft.Azure.ServiceBus库执行消息传递操作。通过使用此库,您不能按消息标识符删除消息。要删除该消息,需要在每次执行Complete操作时传递LockToken,并且没有使用标识符获取消息的选项。
如果您想这样做,那么您应该首先获取消息,然后迭代每条消息,直到获得要搜索的消息为止。
我建议使用Windows.Azure.ServiceBus库,您可以在此处删除消息而无需传递任何令牌。此外,还可以选择使用消息序列号来接收消息。但是WindowsAzure.ServiceBus不支持.Net Core应用程序,但Microsoft.Azure.ServiceBus将支持。
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
queueClient = await factory.CreateMessageReceiverAsync(_entityPath, ReceiveMode.PeekLock);
BrokeredMessage _message = await queueClient.ReceiveAsync(sequenceNumber);
await _message.CompleteAsync();