0

我们的应用架构如下:

第三方事件中心 ==> 我们的天蓝色函数 ==> 我们的事件中心 ==> 我们的事件中心捕获。

问题是我们经常收到重复的消息,而且我们在数据中没有任何主键。

我可以在线阅读Service Bus Sessions 可以避免这个重复的问题。

在此处输入图像描述

Azure 服务总线现在支持会话,因此除了下面列出的事件中心之外,您还可以使用服务总线队列和主题按顺序进行队列处理。服务总线会话提供了单独而不是批量重新处理故障的额外好处。虽然事件中心可以保证如下所示的顺序,但如果丢失分区锁,则按顺序批处理可能会在另一个实例中恢复,从而导致重复。如果这是一个问题,请考虑使用服务总线会话。两者都提供至少一次交付保证。

一般来说,我是 Azure 和流式云架构的新手。

我的问题如下:

  • 服务总线会话可以插入我们当前的架构吗?
  • 或者它是我们活动中心的一项竞争服务?

我不确定我们现在是否准备好放弃我们的活动中心,因为我们刚刚投入了资源来实施它。

4

2 回答 2

2

服务总线会话并不能真正保证不会有重复,因为它仍然是“至少一次交付”,但是服务总线有一个称为重复检测的功能,它基本上有助于防止消息重复进入命名空间,它对传出的重复(主要由暂时的网络问题引起)没有帮助。

除了我上面提到的,你所描述的行为听起来不正常。是的,事件中心可能有重复,但它不应该经常发生,如果是这种情况,我建议关注导致如此多重复的根本原因。(您可以打开 MS 支持票以获取有关查找此问题的一些帮助)但是如果这些重复项不是很多,那么我建议您按照其他答案的建议让您的消费者对重复项具有弹性。

于 2021-12-13T05:46:20.030 回答
1

Azure 服务总线和 Azure 事件中心是两种不同的产品。您不能将一种产品的功能与另一种产品一起使用。

相反,您可以尝试找到一种方法来识别重复消息。如果消息本身没有唯一属性,那么您可以尝试根据属性创建消息的摘要或散列。然后跟踪 Azure 事件中心的消息保留期的哈希值。当有新消息进入时,创建消息的散列并与跟踪的散列进行比较以检查唯一性。

于 2021-12-12T08:15:19.383 回答