1
我剛開始使用Apache Camel,我很好奇異步http客戶端(AHC)看似違反直覺的默認行爲。在使用ActiveMQ中的消息時,我無法讓它以非阻塞的方式進行操作。Camel ApacheMQ - > AHC行爲(阻止?)
我的路線是這樣的:
@Component
public class Broadcaster extends RouteBuilder {
@Override
public void configure() throws Exception {
errorHandler(deadLetterChannel("activemq:failed.messages"));
from("activemq:outbound.messages")
.setExchangePattern(ExchangePattern.InOnly)
.recipientList(simple("ahc:${in.header[PublishDestination]}"))
.end();
}
}
我入隊的幾個消息,其中一半我發送到延遲的web服務器,另一半到正常的。我期望看到所有快速服務器立即消耗的正常消息,並且隨着時間的推移慢慢消息逐漸消失。然而,這是快速的Web服務器上觀察到的行爲:
00:24:02.585, <hello>World</hello>
00:24:03.622, <hello>World</hello>
00:24:04.640, <hello>World</hello>
00:24:05.658, <hello>World</hello>
正如你可以看到有對應於緩慢的服務器上的人爲延遲1秒每一個登錄請求之間正好一秒。基於路徑的時序,它看起來像JMS消費者正在等待AHC完成它消耗掉隊列中的下一條消息之前:
Processor Elapsed (ms)
[activemq://outbound.messages ] [ 1020]
[setExchangePattern[InOnly] ] [ 0]
[ahc:${in.header[PublishDestination]}} ] [ 1018]
我應該在這些情況下明確地使用異步生產者和寫回調的句柄,還是有什麼我失蹤?謝謝!
請參閱ActiveMQ頁面上的_options_部分,基本上是說在一行文本中。 >請參閱JMS組件上的選項,因爲所有這些選項也適用於此組件。 –
謝謝,撇脂是一個糟糕的習慣:) – Kosta