2016-11-27 66 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的所有細節。

這只是一個可能的解決方案的原始想法。名字可以肯定地改進。我希望它能幫助你。