1

我想知道使用 GetMessage 与 GetMessages 逐一获取消息的开销是多少?我应该始终使用 GetMessages(32) 吗?它比 GetMessage() 有什么优势吗?

4

2 回答 2

5

假设您的队列中有 32 条消息,并且您的意图是获取队列中的所有消息,如果您调用 GetMessage(),则需要进行 32 次调用才能获取所有消息,因此需要 32 次 API 事务,就像您调用 GetMessages(32)您只需拨打一个电话即可获取所有消息,因此只需 1 笔交易。

不仅如此,我认为这取决于您的应用程序。例如,我一直在玩这个功能,我决定我的应用程序的工作角色(我们称之为“消费者”)实例一次可以处理 4 条消息。在这种情况下,对我来说,最好使用 GetMessages(4) 从队列中获取 4 条消息,并确保我的消费者实例处理的 4 条消息对其他调用者不可见。如果我使用了 GetMessage(),那么我将不得不进行 4 次此调用,如果我使用 GetMessages(32),那么我的消费者实例将只处理那些额外的 28 条消息,而其他消费者实例将无法获得有机会处理这些消息。

于 2012-10-09T13:38:56.587 回答
2

恕我直言,根据您的应用程序调用 GetMessages 是有意义的。如果按照设计,批量处理消息对我来说更有效,那么我应该批量获取它们(小消息,处理其中一条消息的开销低)但是如果处理一条消息需要 1-5 分钟,那么你会更好做 GetMessage 但有多个工人角色做这项工作。

所以,这取决于

于 2012-10-10T14:27:10.313 回答