【问题标题】:Get message ID in Azure queue获取 Azure 队列中的消息 ID
【发布时间】:2019-06-01 22:11:07
【问题描述】:

有没有办法在将消息插入队列 Azure 后获取消息 ID?

CloudStorageAccount storageAccount = 
    CloudStorageAccount.parse(storageConnectionString);

CloudQueueClient queueClient = storageAccount.createCloudQueueClient();

CloudQueue queue = queueClient.getQueueReference("myqueue");

queue.createIfNotExist();

CloudQueueMessage message = new CloudQueueMessage("Hello, World");
queue.addMessage(message);

// Get message ID here ?

【问题讨论】:

    标签: azure


    【解决方案1】:

    我意识到距离最初提出这个问题已有 5 年了;但是,现在可以实现这一点。

    CloudQueueMessage message = new CloudQueueMessage("Hello, World");
    queue.AddMessage(message);
    
    // here's how you get the id
    string id = message.Id;
    

    【讨论】:

    • 感谢您的到来和更新。
    【解决方案2】:

    只有by getting the message才能获得消息ID。因此,您必须使用GetMessageGetMessages 方法从队列中获取消息。但是,不能保证您会收到刚刚创建的消息,因为 GetMessages 最多只能从队列顶部返回 32 条可见消息。

    【讨论】:

    • 所以以后想获取的话,需要在消息内容中直接放一个唯一的ID吗?
    • 您可以这样做,但您不能告诉队列服务向您返回该特定消息。您需要做的是获取消息,遍历它们并找到相关消息。如果按 id 搜索对您很重要,您可能需要查看表存储。尽管您需要自己处理并发问题。另一种选择是使用服务总线队列。由于我根本没有与他们合作过,我不确定它是否支持通过 id 获取消息。但你可能想检查一下。
    • 我想更新一条消息。如果我无法获取消息 ID,它是如何工作的?
    • 要更新消息,您需要消息 ID。没有它,您将无法更新消息。因此,您唯一的选择是使用GetMessages 获取消息,遍历它们以找到您希望更新的消息并更新该消息。 HTH。
    • 我认为一个重要的问题是您为什么要更新已排队的消息?
    【解决方案3】:

    由于队列遵循“先进先出”或 FIFO 原则,这就是为什么您不能随时获取特定消息,而是必须使用 GetMessage 并对其进行迭代。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 2020-12-12
      • 2017-04-22
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多