爲什麼諮詢不是解決方案? 您可以通過將消息從主題ActiveMQ.Advisory.Connection路由到隊列以便在需要時處理它們並計算正常運行時間來使用。
這個片段添加到您的activemq.xml中
...
</broker>
<!-- configure the camel activemq component to use the current broker -->
<bean id="ActiveMQVMConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localhost?create=false&waitForStart=10000"/>
<property name="userName" value="${activemq.username}"/>
<property name="password" value="${activemq.password}"/>
</bean>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" >
<property name="connectionFactory" ref="ActiveMQVMConnectionFactory"/>
</bean>
<camelContext id="camel" trace="false" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="activemq:topic:ActiveMQ.Advisory.Connection" />
<to uri="activemq:queue:Advisory"/>
</route>
</camelContext>
從諮詢的話題將消息發送到隊列是不是我有問題,它能夠得到正常運行時間。我將如何做到這一點?是否有某種功能我錯過了,或者我應該使用另一種方法?編輯:我還應該提到,我不使用XML,只有Java。 –
每次連接開始或停止時,都會向主題ActiveMQ.Advisory.Connection發送一條消息,其中包含信息。因爲如果你的客戶計算正常運行時間沒有連接,那麼他就會丟失這些信息,因此我建議你將它們發送到隊列中以便稍後處理。所以如果你計算啓動消息的時間和停止消息之間的差異,你有正常運行時間沒有?您使用嵌入式ActiveMQ?您可以通過編程方式創建Camel路徑或嵌入java listener –
這是一個好主意,但問題在於即使在我的「諮詢」程序處於脫機狀態時,我也要計算正常運行時間。用戶將能夠連接和發送消息。任何一段時間後,我都可以檢查連接的正常運行時間,而不必讓程序打開以接收最初的連接信息消息。儘管我發現如何使它準確工作,並且不需要打開額外的連接來管理諮詢消息,以及消費者和生產者已經訂閱的任何主題或隊列,但我仍然堅持使用時鐘想法。 –