我的应用程序使用来自事件中心的事件。事件中心由Azure SQL Server数据库填充。然后,一个消费者就从中心消费事件。
据我了解,事件中心上的事件可能是重复的(因为事件中心使用“至少一次”策略)。例如,一次在数据库上执行的SQL查询可能在事件中心中驻留了一次以上(由于某些通讯失败+重试)
我的问题是:
我正确吗(单个SQL Server事件可能在事件中心上驻留多次)?如果是这样,这些重复的SQL Server事件是否可以驻留在不同的分区上?
如何识别重复的事件(因为每个SQL Server事件中都没有“消息ID”字段)?
非常感谢您,
爱丹。
答案 0 :(得分:0)
1。由于负载平衡因素,您重复的事件可能驻留在相同或不同的分区上
2。要检测重复的事件,可以使用序列号和partitionkey的组合作为比较因子,因为事件的序列号在分区中是唯一的。
答案 1 :(得分:0)
如何将数据复制到事件中心将确定您需要在此处使用的策略...请参阅下文。
这取决于将数据发送到事件中心的方式,取决于重复的记录是否将位于不同的分区中。如果将数据发送到事件中心的代码设置了PartitionKey,并且每次发送记录时PartitionKey都相同,则重复的记录将位于同一分区中。
为了确定重复项,您需要一些唯一ID(或字段组合以创建唯一ID),对于同一记录,该ID始终相同。如果订购很重要,则通常将唯一ID用作PartitionKey。