2016-11-27 68 views
0

我正在写一个.NET窗口服务,它在一定的时间间隔安排工作。我正在使用QUARTZ进行排程。作业将执行2项任务:数据拉和推

  1. 使用某个SDK从一个数据源中提取数据。
  2. 使用REST API将检索到的数据推送到其他数据源。

提取数据非常耗时,而且我会将其拉入同一块。

我的问题主要集中在推拉之间的组件上。当某些东西可用于推送时,我想通知推送组件。

请让我知道工作排队观察员的意见吗?

回答

0

我会使用一个hexagonal的方法。具体为:

  • 石英工作将是一个对象,它完全委托工作提高到一个专用使用情况对象(例如NotifyExtractedData,或许你能想到一个更好的名字......),以避免Quartz细节和业务逻辑之间的耦合;
  • NotifyExtractedData对象将取决于两个接口表示所述端口六边形:可以是IDataGatewayINotifationGateway
  • IDataGateway可以有一个方法Chunk GetChunk();这个接口的实现可以代表六角形的对象 SDK的适配器:SDKDataGateway。在这个对象内部,我将使用SDK的所有数据提取逻辑。 将是包含您提取的数据块的DTO;
  • INotificationGateway接口可能有一个方法void Notify(Chunk chunck);,接收由您的数据网关提取的数据块。接口的实现可以是对象RESTNotificationGateway,其包含关于需要用于通知数据的REST API的所有细节。

这只是一个可能的解决方案的原始想法。名字可以肯定地改进。我希望它能帮助你。