Azure Service Bus及其内部部署版本(Windows Server Service Bus)是否为每个订阅者复制邮件?
例如,假设有一个主题有五个订阅者,那么该消息存储在服务总线数据库中五次 - 每个订阅者一次 - 或者该消息仅存储一次与业务逻辑确定订阅者已阅读该消息?
如果有官方网站和/或文档作为参考提供,那就太好了。
答案 0 :(得分:2)
Azure Service Bus的行为似乎是每个订阅者保留一份副本。我通过创建一个包含两个订阅的主题来测试它。我发送了一条消息,我发现字节中字节的大小是464(使用topic.SizeInBytes)。当我收到一条订阅消息时,大小减半到232.我测试了三个订阅并发生了相同的行为:696字节。
即使他们没有按照订阅保留邮件的副本,他们也会根据主题的最大大小计算邮件大小乘以订阅数量,这可能是您尝试确定的内容。
我同意如果他们记录行为会很好,特别是对于Windows Server的Service Bus,因为这可能会影响您需要预留的存储量的计划。至于Azure Service Bus方面,我不确定幕后实现与知道它如何影响主题的最大大小有关。
答案 1 :(得分:2)
对主题的订阅类似于接收的虚拟队列 发送到主题的消息副本。你可以选择 在每个订阅的基础上注册主题的过滤规则 允许您过滤/限制接收到主题的消息 通过哪个主题订阅。
我认为它会复制邮件。如果它没有复制,它应该始终检查,所有订阅者是否收到消息?此外,如果有过滤器,它应该只检查这些订户删除消息。我认为,复制和应用简单的消费实施成本比没有复制成本要少。