我有大致限定的駱駝路線如下:駱駝AWS-SQS:設置visibilityTimeout動態
from("aws-sqs://my-queue")
.process(myProcessor)
.to(myEndpoint);
然而,myProcessor
依賴於上游服務,有時變得不可用或返回一個「掛起」的響應,所以處理器拋出一個異常,並將交換留在隊列中。然後駱駝連續輪詢並失敗,直到消息被DLQed。
我想要做的是動態配置visibilityTimeout
來實現指數回退,直到上游服務再次可用。因此,而不是from("aws-sqs://my-queue?visibilityTimeout=30")
,我會在我的路徑登記異常處理程序和它的內部,這樣做:
sqsClient.setVisibilityTimeout(Math.pow(2 * visibilityTimeout));
這可能嗎?作爲獎勵,是否可以配置特定消息ID的可見性超時(例如,因此它不會影響其他消息的可見性超時)?
以上代碼不會添加原始可見性時間。實際上,它只會增加經過時間+所需時間。示例 - 初始可見性時間設置爲30秒,10秒後再次請求延長60秒,然後10 + 60 = 70秒。不是90秒。 – Ash