Azure 服务总线:什么是请求和消息?

Azure Service Bus: What is a request and a message?

我们的应用程序使用 Azure 服务总线进行消息传递。我们创建了一些主题和订阅者。我们每天将发送大约 500 条消息,但在图中它显示了对 500 条消息的数十万个请求。我们的账单价格也是每月 800 美元左右。这对于 500 * 30 条消息来说太多了。我无法理解为什么价格这么多,我也想知道图中的请求是什么意思?

如果价格的原因是请求数量,那么我该如何减少请求数量?。我看到的消息是正确的。问题仅在于请求。

这只是一个示例图表,供您参考(非原创)。在原始图表中,我看到大约 100k 请求 500 条消息。

在这里,在常见问题解答下: https://azure.microsoft.com/en-us/pricing/details/service-bus/

如何计算队列和主题的操作计量器?

对于代理实体(队列和 topics/subscriptions),操作是在任何协议上与服务总线服务的任何 API 交互。

对于大小小于或等于 64KB 的邮件,发送、接收删除被视为一次计费操作。如果消息大于64KB,计费操作数按照消息大小的64KB的倍数计算。例如,发送到服务总线的 8 KB 消息将按一次操作计费,而发送到服务总线的 96 KB 消息将按两次操作计费。读取带有锁的 8KB 消息,然后完成或显式放弃消息将被计为两次操作。更新对消息的锁定也会引发操作。

同一消息的多次传递(例如,消息扇出给多个订阅者或在放弃、延迟或死信后检索消息)将被计为独立操作。例如,在具有三个订阅的主题的情况下,发送和随后接收的单个 64KB 消息将生成四个计费操作,一个“输入”和三个“输出”,假设所有消息都传递给所有订阅并在读取期间删除.

此外,创建、读取(列出)、更新和删除队列、主题或订阅都会产生操作费用。

操作是针对队列或 topic/subscription 服务端点进行的 API 调用。这包括管理、Send/Receive 和会话状态操作。

这是我在 docs 中找到的内容,但不能完全确定这是否是您要查找的内容:

When creating a queue or subscription client, you can specify a receive mode: Peek-lock or Receive and Delete. The default receive mode is PeekLock. When operating in the default mode, the client sends a request to receive a message from Service Bus. After the client has received the message, it sends a request to complete the message.

When setting the receive mode to ReceiveAndDelete, both steps are combined in a single request. These steps reduce the overall number of operations, and can improve the overall message throughput. This performance gain comes at the risk of losing messages.