Microsoft Service Bus 是否为主题中的每个订阅复制消息?

Does Microsoft's Service Bus replicate message for every subscription in a topic?

Azure 服务总线及其预置版本 Windows 服务器的服务总线是否为每个订阅者复制一条消息?

例如,假设有一个主题有五个订阅者,那么该消息是在服务总线的数据库中存储了五次(每个订阅者一次),还是该消息只存储了一次与业务逻辑确定哪些订阅者已阅读消息?

如果有官网and/or文档提供参考就好了

Azure 服务总线的行为似乎是它为每个订阅者保留一份副本。我通过创建一个包含两个订阅的主题来对此进行测试。我发送了一条消息,我看到以字节为单位的主题大小为 464(使用 topic.SizeInBytes)。当我收到一条订阅消息时,大小减半为 232。我用三个订阅对其进行了测试,结果发生了相同的行为:696 字节。

即使他们没有为每个订阅保留消息的副本,他们也会计算消息的大小乘以订阅的数量与主题的最大大小,这可能是您试图确定的。

我同意,如果他们记录了行为会很好,尤其是 Windows 服务器的服务总线,因为这可能会影响您需要预留的存储量规划。至于 Azure 服务总线方面,我不确定幕后的实施是否与了解它如何影响主题的最大大小一样重要。

A subscription to a topic resembles a virtual queue that receives copies of the messages that were sent to the topic. You can optionally register filter rules for a topic on a per-subscription basis, which allows you to filter/restrict which messages to a topic are received by which topic subscriptions.

我认为它会复制消息。如果它没有复制,它应该始终检查是否所有订阅者都收到了消息?此外,如果有过滤器,它应该只检查这些订阅者以删除消息。我认为,复制和应用简单的消费实现成本低于不复制成本。

Article