how to avoid Message flowing back to same AMQ after it consumed from same queue in mule-4

50 views Asked by At

here is mule 4 xml code used to get messages from backout queue

    <flow name="message-reprocessing-reports-subflow" doc:id="f3ffe923-ee3e-4e0d-8a29-ec874b9755d7" >
        <scheduler doc:name="Scheduler" doc:id="ff715c36-be3e-4f79-bdc9-db7934c75985" >
            <scheduling-strategy >
                <fixed-frequency timeUnit="HOURS" frequency="1"/>
            </scheduling-strategy>
        </scheduler>
        <logger level="INFO" doc:name="Logger" doc:id="66ef28f0-c4a6-4bec-b824-a51ce7e8ea79" message="@@@@ ---&gt; scheduler triggered"/>
        <jms:consume doc:name="Consume" doc:id="e63155ec-7563-4409-bd83-c66e6e1c792a" config-ref="AMQ-DocuSign-Connector" destination="#[Mule::p('amq.reports.bqueue')]" maximumWaitUnit="SECONDS" maximumWait="10">
            <jms:consumer-type>
                <jms:queue-consumer />
            </jms:consumer-type>
        </jms:consume>
        <logger level="INFO" doc:name="Logger" doc:id="44cb4e95-bbe7-4d00-beef-4ba36340fda2" message="#[payload]" />
        <ee:transform doc:name="Transform Message" doc:id="5a51e211-93b4-4408-a5c2-a0157e25c26b">
            <ee:message>
                <ee:set-payload><![CDATA[%dw 2.0
output application/java
---
payload]]></ee:set-payload>
            </ee:message>
        </ee:transform>
        <choice doc:name="Choice" doc:id="ea7cbccb-6b47-456b-a2cb-c67561b53917">
            <when expression="#[!isEmpty(payload)]">
                <logger level="INFO" doc:name="Logger" doc:id="b8c49215-383f-45e3-aaf3-2b9511a53828" message="#[&quot;Moving messages from DLQ&quot; ++ Mule::p('amq.docusign.reports.bqueue')  as String ++   &quot;to&quot; ++ Mule::p('amq.docusign.reports.topic') as String]" />
                <async doc:name="Async" doc:id="5ffa9543-8171-4a3e-ad9e-5a4480feaa55" >
                    <jms:publish doc:name="Publish" doc:id="44425d09-4ced-4a9d-a1c8-9c6259a2b6c9" destination="${amq.reports.topic}" config-ref="AMQ-Connector" destinationType="TOPIC" />
                </async>            
</when>
                <otherwise>
                    <logger level="INFO" doc:name="Logger" doc:id="eb5f2d82-f0a3-4a8d-93f0-25ac4784e0fc" message="#[&quot;No message found in DLQ&quot; ++  Mule::p('amq.docusign.reports.bqueue')  as String ++  &quot;!&quot;]" />
                </otherwise>
        </choice>
        <error-handler >
            <on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" doc:id="6443cb12-3b4e-4217-b559-f4ed22d2d27f" >
                <logger level="INFO" doc:name="Logger" doc:id="db46b10a-2203-4acb-b65d-07cd674b3373" message="no message found in Dead letter Queue"/>
            </on-error-continue>
        </error-handler>
    </flow>

</mule>

enter image description here

even though the entire flow is sucessfull. messages are again getting back and sitting in backout queue. is there any setting I am missing like acknowledgment on consume operation.

0

There are 0 answers