数据拉和推
问题描述:
我正在写一个.NET窗口服务,它在一定的时间间隔安排工作。我正在使用QUARTZ进行排程。作业将执行2项任务:数据拉和推
- 使用某个SDK从一个数据源中提取数据。
- 使用REST API将检索到的数据推送到其他数据源。
提取数据非常耗时,而且我会将其拉入同一块。
我的问题主要集中在推拉之间的组件上。当某些东西可用于推送时,我想通知推送组件。
请让我知道工作排队观察员的意见吗?
答
我会使用一个hexagonal的方法。具体为:
- 石英工作将是一个对象,它完全委托工作提高到一个专用使用情况对象(例如NotifyExtractedData,或许你能想到一个更好的名字......),以避免Quartz细节和业务逻辑之间的耦合;
- NotifyExtractedData对象将取决于两个接口表示所述端口六边形的:可以是IDataGateway和INotifationGateway
-
IDataGateway可以有一个方法
Chunk GetChunk();
这个接口的实现可以代表六角形的对象 SDK的适配器:SDKDataGateway。在这个对象内部,我将使用SDK的所有数据提取逻辑。 块将是包含您提取的数据块的DTO; -
INotificationGateway接口可能有一个方法
void Notify(Chunk chunck);
,接收由您的数据网关提取的数据块。接口的实现可以是对象RESTNotificationGateway,其包含关于需要用于通知数据的REST API的所有细节。
这只是一个可能的解决方案的原始想法。名字可以肯定地改进。我希望它能帮助你。