Я пытаюсь создать сценарий чтения входящих сообщений GMAIL.Сначала я использовал операцию ListAllMails для получения списка рассылки, а затем использовал посредник Foreach для вызова операции readMail внутри последовательности.Моя проблема в том, что при использовании операции readMail ForEach выпрыгивает из цикла после первого выполнения, а ответ от операции readMail кажется пустым (согласно моей настройке)
Рад, если кто-то может указать, что я делаюздесь неправильно и как это исправить?
API:
<?xml version="1.0" encoding="UTF-8"?>
<api context="/gmail" name="gmail" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST GET" uri-template="/listEmails">
<inSequence>
<gmail.init>
<userId>xxxx@gmail.com</userId>
<accessToken>xxx</accessToken>
<apiUrl>https://www.googleapis.com/gmail</apiUrl>
<clientId>xxxx</clientId>
<clientSecret>xxxx</clientSecret>
</gmail.init>
<log description="log_init" level="custom" separator=",">
<property name="LOG INIT" value="Gmail init success"/>
</log>
<gmail.listAllMails>
<q>*</q>
</gmail.listAllMails>
<log description="list_mails" level="custom" separator=",">
<property name="LOG_LIST_MAILS" value="List mails"/>
<property expression="//resultSizeEstimate" name="RESULT SIZE"/>
</log>
<foreach expression="//messages" id="forEachMail">
<sequence>
<sequence key="read_and_delete"/>
</sequence>
</foreach>
<respond description="response"/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
последовательность read_and_delete:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="read_and_delete" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<log description="log_id" level="custom">
<property expression="//messages/id" name="MESSAGE ID"/>
</log>
<property description="id" expression="//messages/id" name="id" scope="default" type="STRING"/>
<payloadFactory description="email" media-type="xml">
<format>
<init xmlns=""/>
</format>
<args/>
</payloadFactory>
<gmail.readMail>
<id>{$ctx:id}</id>
<format>full</format>
</gmail.readMail>
<log description="log message" level="custom" separator=",">
<property expression="//snippet" name="MESSAGE"/>
</log>
</sequence>
Утешите: обратите внимание, что в почтовом ящике 8 писем, ноцикл foreach завершается после первой итерации
[2019-09-20 08:47:22,016] [micro-integrator] INFO - LogMediator LOG INIT = Gmail init success
[2019-09-20 08:47:22,051] [micro-integrator] INFO - TimeoutHandler This engine will expire all callbacks after GLOBAL_TIMEOUT: 120 seconds, irrespective of the timeout action, after the specified or optional timeout
[2019-09-20 08:47:22,644] [micro-integrator] INFO - LogMediator LOG_LIST_MAILS = List mails,RESULT SIZE = 8
[2019-09-20 08:47:22,647] [micro-integrator] INFO - LogMediator MESSAGE ID = 16d4906cb466ed49
[2019-09-20 08:47:22,682] [micro-integrator] INFO - LogMediator MESSAGE =
Carbon Server Micro Integrator Server has shut down...