retry 是一款專為消息傳輸重試機制設計的函式庫,提供統一的重拋適配層 (Retry Adapter),讓開發者能夠快速實現具備自動重試與備援機制的數據拋送流程。
npm i retry --save
/**
* Kafka Producer轉接器
*/
class MyProducer extends ProducerAdapter<HighLevelProducer> {
/**
* @param kafkaProducer Kafka Producer
* @param options 重拋配置
*/
constructor(
protected kafkaProducer: HighLevelProducer,
protected options?: RetryOption
) {
super(kafkaProducer, options);
}
/**
* 發送數據
*
* @method public
* @param payload 要拋送的數據
* @param callback 拋送後的回乎函數
*/
public send(
payload: ProduceRequest[],
callback: (error: any, result: any) => void
): void {
this.kafkaProducer.send(payload, (err, res) => callback(err, res));
}
}
const myProducer = new MyProducer(PRODUCER);
const payload = { data: 100 };
myProducer.publish(payload);- 提供拋送者介面,實作介面中的
send方法,並在送出資料時使用publish方法,即可在拋送資料失敗時,重新拋送 - 超出失敗上限後將資料備份至特定路徑
Abstract Class,拋送者轉接器
ProducerAdapter的建構值
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| producer | T | Required | undefined |
任何拋送數據的物件 |
| options | RetryOption | Optional | Example | 重拋配置,項目可參考 |
資料上拋方法,拋送失敗會自動嘗試重新拋送
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| payload | any | Required | undefined |
要送出的資料 |
| callback | (error: any, result: any) => void | Required | undefined |
送出資料後的回乎函 |
Abstract Method,須實作此方法,資料上拋,但失敗不會自動重新拋送
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| payload | any | Required | undefined |
要送出的資料 |
| callback | (error: any, result: any) => void | Required | undefined |
送出資料後的回乎函數 |
Interface,重拋配置項目
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| count | number | Optional | 3 |
送出失敗嘗試重拋的上限次數 |
| interval | number | Optional | 5000 |
嘗試重新拋送的時間間距,單位ms |
| backupDir | string | Optional | './backup' |
重拋失敗後的資料保存路徑 |
Interface,拋送者介面
須實作此方法,資料上拋
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| payload | any | Required | undefined |
要送出的資料 |
| callback | (error: any, result: any) => void | Required | undefined |
送出資料後的回乎函數 |
Abstract Class,重拋機制範本
RetryTemplate的建構值
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| producer | Producer | Required | undefined |
拋送者 |
| options | RetryOption | Optional | Example | 重拋配置,項目可參考 |
更新重拋配置
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| options | RetryOption | Required | Example | 重拋配置,項目可參考 |
Abstract Method,須實作此方法,嘗試重新拋送資料
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| payload | T | Required | undefined |
要送出的資料 |
Class extends from RetryTemplate,重拋機制
嘗試重新拋送資料
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| payload | T | Required | undefined |
要送出的資料 |