gpt4 book ai didi

azure - 仅接收有关主题的最后一条消息

转载 作者:行者123 更新时间:2023-12-03 04:28:53 25 4
gpt4 key购买 nike

我在 Azure Servicebus 主题上订阅了一个应用程序,该应用程序不断从流分析接收消息。但该应用程序并非每次都订阅该主题。当应用程序进行订阅时,如何仅接收来自主题的最后一条消息

最佳答案

根据您的问题和评论,我可以向您提供以下建议:

  • 当应用程序启动时,连接到 Azure ServiceBus 订阅并获取队列中的所有消息。
  • 删除之前的所有消息(只需完成即可)并处理最后一条消息。
  • 然后您就可以开始收听新收到的消息。

基于这个答案(Clearing azure service bus queue in one go):

// Get the message receiver
var messagingFactory = MessagingFactory.CreateFromConnectionString("ServiceBusConnectionString");
var messageReceiver = messagingFactory.CreateMessageReceiver(SubscriptionClient.FormatSubscriptionPath("TopicName", "SubscriptionName"));

BrokeredMessage lastMessage = null;
while (messageReceiver.Peek() != null)
{
if(lastMessage != null)
{
// This was not the last message so complete it.
lastMessage.Complete();
}

// Batch the receive operation
var brokeredMessages = messageReceiver.ReceiveBatch(300).ToList();

//Get the last message and remove it from the list
lastMessage = brokeredMessages.Last();
brokeredMessages.RemoveAt(brokeredMessages.Count -1);

// Complete all the other messages
var completeTasks = brokeredMessages.Select(m => Task.Run(() => m.Complete())).ToArray();

// Wait for the tasks to complete.
Task.WaitAll(completeTasks);
}

if (lastMessage != null)
{
// Process your message
}

// Start listening to new incoming message
messageReceiver.OnMessage(message =>
{
// Process new messages
}, new OnMessageOptions());

关于azure - 仅接收有关主题的最后一条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39665425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com