Azure 服务总线及其本地版本(适用于 Windows Server 的服务总线)是否为每个订阅者复制消息?
例如,假设有一个主题有五个订阅者,那么该消息是否会在服务总线的数据库中存储五次(每个订阅者一次),或者该消息仅存储一次,并通过业务逻辑来确定哪个消息订阅者已阅读该消息?
如果有官方网站和/或文档可供引用,那就太好了。
最佳答案
Azure 服务总线的行为似乎是为每个订阅者保留一份副本。我通过创建一个具有两个订阅的主题来对此进行测试。我发送了一条消息,发现主题的大小(以字节为单位)为 464(使用 topic.SizeInBytes)。当我收到一条订阅消息时,大小减半至 232。我用三个订阅对其进行了测试,并发生了相同的行为:696 字节。
即使他们没有为每个订阅保留消息副本,他们也会根据主题的最大大小(这可能是您试图确定的大小)来计算消息大小乘以订阅数量。
我同意,如果他们记录了该行为,尤其是 Windows Server 的服务总线,那就太好了,因为这可能会影响您需要预留的存储量的规划。至于 Azure 服务总线方面,我不确定幕后的实现是否比了解它如何影响主题的最大大小更重要。
关于azure - Microsoft Service Bus 是否会为主题中的每个订阅重复消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35831857/