wso2esb — агрегатный посредник не обнаружен

Я использую WSO2 4.0.3 в Mac OSX 10.6. У меня включена функция сервера служб данных (3.2.2).

работает в wso2esb 4.0.3 на совокупном посреднике.

Ниже приведен код, в котором итеративный посредник работал отлично, но совокупный посредник, похоже, не распознается, так как журнал в нем не печатается. Ответ от конечной точки печатается в журнале уровень = полный внепоследовательности, но поток не продолжается в совокупности.

Может ли кто-нибудь из wso2team подтвердить, ведет ли агрегат ожидаемым образом в wso2 esb 4.0.3?

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="test" transports="http https" startOnLoad="true" trace="disable" statistics="enable">
<target>
    <inSequence >
        <log level="full" separator=",">
            <property name="InSequence-EntryMessage" value="test - Entering InSequence."/>
        </log>
        <iterate preservePayload="true" attachPath="//REQ" expression="//REQ/MODULE">
            <target>
                <sequence>
                    <payloadFactory>
                        <format>
                            <MODULE>
                                <party_id>$1</party_id>
                            </MODULE>
                        </format>
                        <args>
                            <arg expression="//REQ/MODULE/party_id"/>
                        </args>
                    </payloadFactory>
                    <log level="full" separator=",">
                        <property name="InSequence-iterate" value="formed after iterate"/>
                    </log>
                    <send>
                        <endpoint key="conf:/test/ds_endpoint.xml"/>
                    </send>
                </sequence>
            </target>
        </iterate>
        <log level="custom" separator=",">
            <property name="InSequence-ExitMessage" value="test - Exiting InSequence."/>
        </log>
    </inSequence>
    <outSequence >
        <log level="full" separator=",">
            <property name="ValidResponse" value="test  Sending the Response Back."/>
        </log>
        <aggregate>
            <log level="full" separator=",">
                <property name="ValidResponse" value="TEST ---------------- Sending the Response Back."/>
            </log>
            <correlateOn expression="//TEST"/>
            <completeCondition> 
                <messageCount min="-1" max="-1"/> 
            </completeCondition> 
            <onComplete expression="//TESTALL">
            <log level="full" separator=",">
                <property name="ValidResponse" value="TEST 1 ---------------- Sending the Response Back."/>
            </log>
            <send/>
            </onComplete>
         </aggregate>
        <log level="full" separator=",">
            <property name="OutSequence-ExitMessage" value="test - Exiting OutSequence."/>
        </log>
    </outSequence>
</target>
</proxy>

Ценю ответ на это!


person siri    schedule 09.05.2013    source источник


Ответы (1)


Медиатор журнала применим только внутри тега onComplete в посреднике Aggregate. Таким образом, следующий журнал не будет распознан, и это ожидаемое поведение,

<log level="full" separator=",">
   <property name="ValidResponse" value="TEST ---------------- Sending the Response Back."/>
  </log> 

но следующий журнал, который вы добавили в тег «onComplete», должен работать,

<log level="full" separator=",">
<property name="ValidResponse" value="TEST 1 ---------------- Sending the Response Back."/>
</log>
person Malith    schedule 10.05.2013
comment
Спасибо за ответ! Мне также не удалось увидеть журнал завершения. Вывод конечной точки: ‹TEST›....‹/TEST›, поэтому я дал корреляцию по выражению в //TEST, а затем объединил собранные сообщения с использованием выражения oncomplete ‹//TESTALL›. Теперь окончательный вывод должен выглядеть как ‹TESTALL›‹TEST›...‹/TEST›‹TEST›…‹/TEST›‹/TESTALL›, который я не видел, как и журналы. вы, пожалуйста, поправьте меня, если я ошибаюсь в сопоставлении сообщений с окончательным выводом? - person siri; 13.05.2013
comment
Я также попробовал раздел ниже, чтобы увидеть, работает ли агрегат и журнал, но тщетно. Не могли бы вы указать на ошибку, если она есть? ‹aggregate›‹!--‹correlateOn expression=//TEST/›--› ‹completeCondition› ‹messageCount min=-1 max=-1/› ‹/completeCondition› ‹onComplete expression=//TEST› ‹log level= полный разделитель=,›‹имя свойства=ValidResponse value=TQS_SMART_FRAUD ----------------3333 Отправка ответа обратно./› ‹/log› ‹send/› ‹/onComplete› ‹ /совокупность› - person siri; 13.05.2013
comment
Вы не можете добиться такого поведения с приведенной выше конфигурацией. Потому что вы не можете поместить агрегированное сообщение в ‹TESTALL›, определив параметр выражения в теге onComplete. Параметр выражения в теге onComplete — это выражение XPath, указывающее, какие элементы следует агрегировать. Поэтому вам не нужно использовать здесь параметр correctOn. Чтобы прикрепить агрегированное сообщение к тегу ‹TESTALL›, вам нужно добавить фабрику полезной нагрузки или обогатить посредник для этого. - person Malith; 13.05.2013
comment
Таким образом, ваша новая конфигурация будет выглядеть так. ‹aggregate› ‹completeCondition› ‹messageCount min=-1 max=-1/› ‹/completeCondition› ‹onComplete expression=//TEST› ‹--используйте полезную нагрузку или посредник обогащения для добавления ‹//TESTALL› ----› ‹отправить/› ‹/по завершении› ‹/объединить› - person Malith; 13.05.2013
comment
Ваша приведенная выше конфигурация выглядит нормально, разве она не печатает журнал? - person Malith; 13.05.2013
comment
Да, эта конфигурация, которую я уже пробовал, не дала мне желаемого вывода и не распечатала журнал. /TEST› ‹уровень журнала=полный разделитель=,›‹имя свойства=ValidResponse value=TQS_SMART_FRAUD --- Отправка ответа обратно./› ‹/log›‹send/›‹/onComplete›‹/aggregate›. Теперь мой вывод или агрегированное сообщение должно быть ‹TEST›...‹/TEST›‹TEST›....‹/TEST›. Не могли бы вы подтвердить, что мой код и выходные данные верны? Кроме того, поддерживает ли ESB 4.0.3 агрегатный посредник? - person siri; 14.05.2013
comment
Да, код и ожидаемый результат верны. И ESB 4.0.3 также поддерживает агрегатный посредник. Можете ли вы проверить, есть ли в ответном сообщении элемент ‹TEST›. - person Malith; 17.05.2013
comment
Спасибо, что вернулись. Да, выход из конечной точки имеет результат xml как ‹TEST›....‹/TEST›. - person siri; 21.05.2013