Я хочу опубликовать данные в очереди асинхронным способом, используя шаблон camelContext.
Полный контекст:
<camelContext id="xContext" xmlns="http://camel.apache.org/schema/blueprint">
<route id="notifPublisher">
<from id="notifService" uri="cxfrs:bean:xRequestService"/>
<inOnly id="toRequestQueue" uri="activemq:queue:{{data.queue}}?jmsMessageType=Text"/>
<setHeader headerName="Content-Type" id="setContentType"/>
</route>
<route id="xReceiver">
<from id="dataqueue" uri="activemq:queue:{{data.queue}}?jmsMessageType=Text"/>
<log id="logDataQueue_" message="Data/DatAs ${body}"/>
<bean id="fetchUsers" method="fetchUsers" ref="dataProcessor"/>
<bean id="checkDataInList" method="checkDataInList" ref="dataProcessor"/>
<loop doWhile="true" id="_loop1">
<simple>${header.mailMap} != 'EMPTY'</simple>
<bean id="sendInQueuePerData" method="sendInQueuePerData" ref="dataProcessor"/>
<to id="emailqueue" uri="activemq:queue:{{email.queue}}?jmsMessageType=Text"/>
</loop>
</route>
</camelContext>
emailQueue начинает передаваться другим emailProcessor.
emailProcessor отправляет электронные письма на SMTP.
Проблема в том, что DataProcessor блокируется до тех пор, пока не будут завершены все входные данные.
Его нельзя блокировать после отправки данных в очередь.