2014-07-08 87 views
0

所以我試圖用apache servicemix/camel來聚合一些通過JMS隊列傳來的消息。我擁有的邏輯是死 - 簡單的,我只是希望它使用收到的最後一條消息,並且只在最後一條消息後3秒發送。消息不被apache駱駝使用servicemix作爲代理

我將servicemix設置爲消息代理,我可以在這樣的容量中使用它,但它似乎不會觸發路由。我從來沒有這樣做之前,所以賠率是我可怕的關閉基地,但這裏是我迄今爲止(把這個在部署/ Fedora的消息傳送/駱駝context.xml中)

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:camel="http://camel.apache.org/schema/spring" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://camel.apache.org/schema/spring 
     http://camel.apache.org/schema/spring/camel-spring.xsd"> 

    <camelContext xmlns="http://camel.apache.org/schema/spring"> 
     <route> 
     <from uri="activemq:topic:fedora.apim.update.merge"/> 

     <aggregate completionTimeout="3000"> 
      <correlationExpression> 
       <simple>header.pid</simple> 
      </correlationExpression> 
      <to uri="log:events"/> 
      <to uri="activemq:topic:fedora.apim.update"/> 
     </aggregate> 
    </route> 
    </camelContext> 

<bean id="activemq" 
     class="org.apache.activemq.camel.component.ActiveMQComponent"> 
     <property name="brokerURL" value="tcp://localhost:61616"/> 
    </bean> 
</beans> 

的OSGi的應用程序似乎開始運行時沒有錯誤,並且消息在主題中被接收和排隊:fedora.apim.update.merge然而它們只是坐在隊列中,並且永遠不會被使用或推送到目標隊列。

+0

你有沒有部署該程序。這是一個Maven項目嗎? –

回答

0

我有以下代理配置測試作爲一個獨立的應用程序的途徑(一ServiceMix的容器外)和一切工作按預期:

<broker xmlns="http://activemq.apache.org/schema/core" useJmx="true" 
    persistent="false"> 
    <transportConnectors> 
     <transportConnector uri="tcp://localhost:61616" /> 
    </transportConnectors> 
</broker> 

所以,我想,我們可以假設你的駱駝路由定義爲不是問題,而是ActiveMQ配置和/或ServiceMix設置。

編輯:

注意,該消息給JMS主題目的地,如果沒有活動的用戶連接到目標丟失。如果您需要某種持久性,請使用持久訂戶或JMS隊列目標。