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

时间:2016-03-06 20:02:14

标签: azure azureservicebus servicebus

Azure Service Bus及其内部部署版本(Windows Server Service Bus)是否为每个订阅者复制邮件?

例如,假设有一个主题有五个订阅者,那么该消息存储在服务总线数据库中五次 - 每个订阅者一次 - 或者该消息仅存储一次与业务逻辑确定订阅者已阅读该消息?

如果有官方网站和/或文档作为参考提供,那就太好了。

2 个答案:

答案 0 :(得分:2)

Azure Service Bus的行为似乎是每个订阅者保留一份副本。我通过创建一个包含两个订阅的主题来测试它。我发送了一条消息,我发现字节中字节的大小是464(使用topic.SizeInBytes)。当我收到一条订阅消息时,大小减半到232.我测试了三个订阅并发生了相同的行为:696字节。

即使他们没有按照订阅保留邮件的副本,他们也会根据主题的最大大小计算邮件大小乘以订阅数量,这可能是您尝试确定的内容。

我同意如果他们记录行为会很好,特别是对于Windows Server的Service Bus,因为这可能会影响您需要预留的存储量的计划。至于Azure Service Bus方面,我不确定幕后实现与知道它如何影响主题的最大大小有关。

答案 1 :(得分:2)

  

对主题的订阅类似于接收的虚拟队列   发送到主题的消息副本。你可以选择   在每个订阅的基础上注册主题的过滤规则   允许您过滤/限制接收到主题的消息   通过哪个主题订阅。

我认为它会复制邮件。如果它没有复制,它应该始终检查,所有订阅者是否收到消息?此外,如果有过滤器,它应该只检查这些订户删除消息。我认为,复制和应用简单的消费实施成本比没有复制成本要少。

Article