iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
1
Software Development

從零開始土炮MQ系列 第 21

七、功能整合與函式庫開發規劃(2)

  • 分享至 

  • xImage
  •  

依示意圖表示,將 RouterQueueDispatch 視為一個完整的個體。但是各元件開放外部操作的部份有所限制。

  • Router:只開放外部將 Resurce 的傳入。
  • Queue:完全隱藏,不被外部所接觸。只提供 RouterDispatch 操作。
  • Dispatch:提供取得 Release 與註冊通知的兩個功能。
  • Resource:資料本身。
public class Resource
{
    byte[] Payload{set;get;}
}

public interface IRouter
{
    // 放入 Resource 
    void Push(Resource res)
}

public interface IDispatch
{
    Resource Pop();
    void Subscription(IConsumer consumer);
}

接著,定義出測試的實境案例。

  1. 同質性資料:
    • 當放入 N 筆資料到 Router 後,隨後從 Dispatch 取得的資料與放入順序相同。
    • 當放入資料數量超過限制時,丟出異常例外。
    • 當 Queue 內不存在任何資料,從 Dispatch 取得資料時,會丟出異常例外。
    • 當 Dispatch 採用註冊通知時,會依據 consumer 的處理狀態進行分派。
  2. 異質性資料:
    • 當放入未註冊的異質性資料,丟出無法識別的異常例外。
    • 當 consumer 向 Dispatch 取得未註冊的異質性資料時,丟出無法識別的例外。

在這邊,只能先拋出規劃框架,不然來不及說明分散系統的部份。
實作部份,後續將會慢慢更新到 GitHub。


上一篇
七、功能整合與函式庫開發規劃(1)
下一篇
八、通訊與協定
系列文
從零開始土炮MQ30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言