Question

I am trying to use persistent queue storage to recover from unexpected failure. My mule version is 3.3.1

I pick up messages from a queue and enter "until successful" loop. If mule stops for some reason, I would like the message to be persistent.

Here is my relevant code

<spring:bean id="outboundStore" class="org.mule.util.store.QueuePersistenceObjectStore" />

<until-successful objectStore-ref="outboundStore" 

I do not see the messages in .mule directory. What am I doing wrong?

Sorry if the question is not clear.

Adding Flows as requested:

<flow name="InitialFlow" processingStrategy="synchronous">
    <inbound-endpoint ref="firstQueue"/>
    <until-successful objectStore-ref="outboundStore" maxRetries="6" secondsBetweenRetries="5" deadLetterQueue-ref="secondQueue" failureExpression="groovy:message.getInvocationProperty('soapResponse') == 'BAD'">
        <flow-ref name="somSubFlow" />
    </until-successful>
</flow>

<sub-flow name="someSubFlow">
<http:outbound-endpoint ref="someEndpoint" exchange-pattern="request-response" method="GET" />  
</sub-flow>

Please do let me know if you need more information.

Was it helpful?

Solution

Using a configuration very similar to yours, I can totally see messages pending delivery written in the .mule/queuestore/queuestore directory.

The only thing I can think of is an issue with this expression groovy:message.getInvocationProperty('soapResponse') == 'BAD' that would somehow mess with the processing.

Is this expression correct? Why not using MEL?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top