2017-06-26 62 views
1

是否有实施事件采购网关的最佳实践?网关是指基础设施或服务,它允许从某些外部服务返回的状态开始生成一组事件。EventSourcing网关(与外部系统同步)

即使应用程序基于事件采购,仍可能存在一些外部无法控制的权利。例如,您想要同步Azure AD中的用户列表,并执行提示服务,返回用户列表。然后,您从投影中获得用户列表,与外部状态产生差异,并生成事件来填补这一差异。

或者您的应用程序是在线商店,您应该导入实际的美元/欧元/比特币等级来显示价格。网关可以轮询某些货币提供商并生成事件。在简单的情况下,这很容易,但如果投影状态是更复杂的结构,那么平凡的导入并不明显。

也许这种情况下是否有通用的方法?

+1

“但是如果投影状态是更复杂的结构,琐碎的导入不明显”你有没有一个例子? – plalx

回答

4

使用poll-emit的构建集成适配器是正常的,我个人更喜欢这种整体集成方式。

但是,这与事件采购无关,因为实际需要解决您的集成问题的方法是模拟外部系统自行发出事件所需的功能,并且可以构建消耗系统这些事件。

当这些事件从适配器到达您的系统 - 您可以随心所欲地做任何事情,但事实上,事件源假设您将事件流中存储自己的对象状态,但万一事件来自某个外部系统 - 这不是你的状态。你可以从外部事件派生你的系统状态,但这些将是你自己的事件。

+0

>当这些事件从适配器到达您的系统 好的,但这部分电路是最不清楚的。外部系统不会产生事件,它只有可观察的状态,应该表示为事件序列。 主要任务是将共享状态转换为可存储在EventStore中的事件 –

+1

您可以将可观察状态转换为事件。例如,您从某个数据库视图(丑陋但通常)中读取并发现差异,然后发出“ExternalStuffCreated”或“ThatThingWasApproved”等。 –