我們有一個實現,即將消息放在AWS SQS隊列中並由Camel AWS使用。我們正在使用concurrentConsumers = 1.我們正在通過org.apache.camel.component.aws.sqs.SqsConsumer完成隊列的輪詢。Apache Camel沒有及時從SQS獲取消息
測試包括向SQS發送消息(來自遠程系統),然後記錄消息在隊列中的時間。在Camel端,我們對SqsConsumer類進行了跟蹤日誌記錄,我們可以看到輪詢輪詢的時間以及消息的消耗時間。
如果我們每10秒在隊列中放置一條消息,大多數時間駱駝都會在1-2秒內收到消息。但是,有很多時候需要更長的時間(10+秒)。
基本上我們看到此行爲:
- (遠程)放在SQS
- (駱駝)投票
- (駱駝)投票
- (駱駝)投票
- 消息... (對於許多輪詢,默認開的500毫秒)
- (CAMEL)從SQS
我們已經在沒有Camel的情況下端對端地測試了SQS,吞吐量沒有問題(幾秒鐘內有1000條消息)。
我們的這個測試的Camel實現只包含從SQS隊列讀取和日誌記錄 - 沒有其他功能。
我們已經測試過改變許多其他駱駝SQS參數,沒有行爲上的差異。但是,例如,如果我們使用concurrentConsumers = 10進行測試,則每個消息幾乎是立即從隊列中拾取,延遲最小。
我的問題是爲什麼單個消費者沒有及時拿起信息?如果真的每500毫秒輪詢一次,它怎麼沒有「看到」和收集消息?
注意 - 由於我們的應用程序的功能,我們很猶豫是否啓用了使用concurrentConsumers的多線程。
您是否嘗試過長時間輪詢? –
@ketanvijayvargiya是的,但行爲似乎相同。 –