[英]Service Bus ordered fast consecutive messages
假设我有两种类型的消息。 消息A 和消息B。
大多数情况下,MessageA 与 MessageB 以长间隔发送。 但是,在某些情况下,两条消息彼此相隔数秒发送。 MessageA 可能仍在创建 DB 条目,但 MessageB 尝试更新不存在的条目。
如何处理这种情况? 我知道有两种选择:
哪个是最佳实践?
还有第三种处理这些竞争条件的选项(这并不总是可能的,取决于消息的性质):
一个实际的例子:假设我们有一个包含 Year Group 和 Student 实体的学校数据库。 要创建新学生,系统会发送一条包含所有学生详细信息的消息。 要创建新的年级组,将发送一条消息,其中包含年级组名称和应属于该年级组的 StudentId 列表。
如果在收到所有学生之前收到年级组消息,您可以创建一个仅包含学生 ID 的占位符学生实体(可能还有一个标志来标识它是占位符)。
收到学生消息后,只需添加或更新现有记录,并填写所有学生详细信息。
如果您必须选择列出的两个选项之一,则取决于:
对于这种需要消息顺序的场景,Service Bus 提供了一项功能来确保按照它们最初发送的顺序处理消息 - 消息会话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.