2014-12-15 5 views
0

두 개의 응답 메시지를 집계해야합니다.집계 중재자가 작동하지 않습니다.

여기 내 코드입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
 
     name="AggregateMediator" 
 
     transports="jms" 
 
     statistics="disable" 
 
     trace="disable" 
 
     startOnLoad="true"> 
 
    <target> 
 
     <inSequence> 
 
     <log> 
 
      <property name="hi" value="start*************************"/> 
 
     </log> 
 
     <aggregate> 
 
      <completeCondition> 
 
       <messageCount min="2" max="2"/> 
 
      </completeCondition> 
 
      <onComplete expression="//OutboundGTMXML"> 
 
       <send> 
 
        <endpoint> 
 
        <address uri="jms:/aggregateReciever?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue"/> 
 
        </endpoint> 
 
       </send> 
 
      </onComplete> 
 
     </aggregate> 
 
     </inSequence> 
 
    </target> 
 
    <parameter name="transport.jms.ContentType"> 
 
     <rules> 
 
     <jmsProperty>contentType</jmsProperty> 
 
     <default>application/xml</default> 
 
     </rules> 
 
    </parameter> 
 
    <parameter name="transport.jms.Destination">aggregateSender</parameter> 
 
    <description/> 
 
</proxy> 
 
          

하지만이 작동하지 않습니다. 골재 매개체를 만나 자마자 더 이상 진행되지 않습니다. 도와 주시겠습니까? 내가 어디가 잘못되었는지 말해 주시겠습니까? 미리 감사드립니다.

답변

0

집합 메디 에이터는 반복/클론 조정자와 함께 사용할 수 있습니다. 요청 경로에서 사용합니까? 완전한 조건 집합에 대해 min = -1, max = 2

+0

는 반복은/복제 중재자로를 사용하는 것이 필수인가? 같은 루트 태그를 가진 대기열에서 두 개의 응답을 받고,이를 더 집계하여 보내야합니다. –

+0

예. Aggregate Mediator는 clone/iterate mediator에 의해 설정된 messgaeID를 내부적으로 검사합니다. – Ratha

+0

고마워요 :) –

0

집합 중재자는 응답을 수집해야합니다. 집계 중개자를 사용하여 인바운드 요청을 집계 할 수는 없습니다. [1]을 참조하십시오. 이것은 aggregate mediator + iteration mediator를 사용하는 좋은 예입니다. [1] https://docs.wso2.com/display/ESB480/Sample+400%3A+Message+Splitting+and+Aggregating+the+Responses

<definitions xmlns="http://ws.apache.org/ns/synapse"> 

    <proxy name="SplitAggregateProxy"> 
     <target> 
      <inSequence> 
       <iterate expression="//m0:getQuote/m0:request" preservePayload="true" 
         attachPath="//m0:getQuote" 
         xmlns:m0="http://services.samples"> 
        <target> 
         <sequence> 
          <send> 
           <endpoint> 
            <address 
             uri="http://localhost:9000/services/SimpleStockQuoteService"/> 
           </endpoint> 
          </send> 
         </sequence> 
        </target> 
       </iterate> 
      </inSequence> 
      <outSequence> 
       <aggregate> 
        <onComplete expression="//m0:getQuoteResponse" 
           xmlns:m0="http://services.samples"> 
         <send/> 
        </onComplete> 
       </aggregate> 
      </outSequence> 
     </target> 
    </proxy> 
</definitions> 
+0

보통 외부 사이트가 다운 된 경우에도 관련성 높은 답변을 얻으려면 관련 코드를 게시하는 것이 좋습니다. – Artemix

+0

고마워요 :) –

관련 문제