如何在日益复杂的平台中保持对众多赛事场景的控制?

问题描述 投票:0回答:1

我有一个优惠券服务,可以监听传入的销售情况,并根据已购买/退回的商品等更新优惠券。

因此,我们使用一个 SaleCompletedEvent,这可能会将优惠券置于“已兑换”或“可用”状态。

但是,不仅仅是销售可以改变优惠券的状态,平台中的其他事物(例如VoucherRedeemedEvent)也可能随时到达并更改优惠券的状态。在这种情况下,兑换券与销售无关。

因此,我们在多个事件主题中遇到了竞争问题:我们无法保证 SaleCompletedEventVoucherRedeemedEvent 会按照它们创建的顺序到达,因此我们可能会不按逻辑顺序处理这些事件,并最终得到一张优惠券错误的状态。

随着平台中事件数量的增长,我正在考虑将所有这些类型的事件(可能影响共享资源)放在同一个消息总线主题上,以便它们至少会按预期顺序到达消费。但是,随着平台赛事数量的增加以及比赛复杂性的增加,还有哪些其他方法可以用来解决此类问题?

events microservices azureservicebus event-driven-design eda
1个回答
0
投票

您可能需要重新考虑您发送的消息。如果现实生活中有一个事件(销售),则仅发出一条消息。

如果我没弄错的话,如果在销售期间使用优惠券,您将发送一个 VoucherRedeemedEvent,然后发送一个 SaleCompletedEvent。我建议您只发出SaleCompletedEvent,并在其中包含优惠券已使用的信息。这将解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.