在我的Apache Camel應用完整的交流,我有一個非常簡單的途徑:Apache的駱駝:當聚合交換完成
from("aws-sqs://...")
.aggregate(constant(true), new AggregationStrategy())
.completionSize(100)
.to("SEND_AGGREGATE_VIA_HTTP");
也就是說,它需要在100批來自AWS SQS的消息,它們分組,並通過HTTP將它們發送到某處。
在進入聚合階段時,SQS消息的交換已成功完成,SqsConsumer
在此時將其從隊列中刪除。
問題是,彙總交換可能會發生某些情況(可能會發生錯誤),並且郵件將丟失。只有當他們所在的彙總交易也成功完成(一批消息被交付)時,我才真正希望這些原始交易成功完成(消息從隊列中刪除)。有沒有辦法做到這一點?
謝謝。
只有在交換完全成功後,您纔想從隊列中刪除消息嗎? –
@SoucianceEqdamRashti是的,但只有當彙總交換完成時。 –
我不熟悉平方,但它有能力定義退出隊列嗎?例如,如果在處理期間發生錯誤,則消息被推送到該隊列而不是僅僅消失。否則,也許有辦法將整個過程設置爲一個巨大的事務,並且只有當事務完成時才從隊列中移除消息。 –