Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I set the correlation sequence property on a mule message?
    primarykey
    data
    text
    <p>I would like to sort messages coming from a jdbc query before aggregating them using a collection aggregator, I think the best way to do this is the resequencer. When I add this line </p> <pre><code>&lt;resequencer timeout="6000" failOnTimeout="false" /&gt; </code></pre> <p>the workflow produces this error:</p> <blockquote> <p><em><strong></em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>**<em>*</em>****</strong> Message : Execution of the expression "message.payload.INVOICE_NUMBER" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: MuleEvent[] Code : MULE_ERROR--2 -------------------------------------------------------------------------------- Exception stack is: 1. [Lorg.mule.api.MuleEvent; cannot be cast to java.util.Map (java.lang.ClassCastException)<br> org.mvel2.optimizers.impl.refl.nodes.MapAccessor:42 (null) 2. [Error: cannot invoke getter: getPayload [declr.class: org.mule.el.context.MessageContext; act.class: org.mule.el.context.MessageContext] (see trace)] [Near : {... Unknown ....}] ^ [Line: 1, Column: 0] (org.mvel2.CompileException) org.mvel2.optimizers.impl.refl.nodes.GetterAccessor:75 (null) 3. Execution of the expression "message.payload.INVOICE_NUMBER" failed. (org.mule.api.expression.ExpressionRuntimeException)<br> org.mule.el.mvel.MVELExpressionLanguage:211 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html) 4. Execution of the expression "message.payload.INVOICE_NUMBER" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: MuleEvent[] (org.mule.api.transformer.TransformerMessagingException)<br> org.mule.transformer.AbstractTransformer:123 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerMessagingException.html) -------------------------------------------------------------------------------- Root Exception stack trace: java.lang.ClassCastException: [Lorg.mule.api.MuleEvent; cannot be cast to java.util.Map at org.mvel2.optimizers.impl.refl.nodes.MapAccessor.getValue(MapAccessor.java:42) at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:41) at org.mvel2.optimizers.impl.refl.nodes.VariableAccessor.getValue(VariableAccessor.java:38) + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)</p> <hr> </blockquote> <pre><code>&lt;when expression="#[message.payload.LHF_INVOICE_METHOD == 'EDI']"&gt;&lt;processor-chain&gt; &lt;message-properties-transformer doc:name="Set Correlation ID"&gt; &lt;add-message-property key="MULE_CORRELATION_SEQUENCE" value="#[message.payload.INVOICE_NUMBER]" /&gt; &lt;/message-properties-transformer&gt; &lt;resequencer timeout="6000" failOnTimeout="false" /&gt; &lt;set-payload value="#[message.payload.INVOICE_NUMBER]" doc:name="EDI"/&gt; &lt;collection-aggregator timeout="3200" failOnTimeout="false" doc:name="EDI" storePrefix="EDI" /&gt; &lt;smtp:outbound-endpoint host="mail.example.com" to="test@example.com" from="muleservice@example.com" subject="[Invoice Workflow] EDI" responseTimeout="10000" doc:name="EDI"/&gt; &lt;collection-splitter doc:name="Collection Splitter"/&gt; &lt;jdbc:outbound-endpoint exchange-pattern="one-way" queryKey="gMarkProcessedInRoss" queryTimeout="1000" connector-ref="DatabaseMuleLogin" doc:name="Mark Processed in Ross"&gt; &lt;/jdbc:outbound-endpoint&gt; &lt;/processor-chain&gt; &lt;/when&gt; </code></pre> <p>I added a splitter after the resequencer (below) which works, except that the messages are still coming out unsorted on the email.</p> <pre><code>&lt;set-property propertyName="MULE_CORRELATION_SEQUENCE" value="#[message.payload.INVOICE_NUMBER]" /&gt; &lt;resequencer timeout="6000" failOnTimeout="false" /&gt; &lt;collection-splitter doc:name="Collection Splitter"/&gt; &lt;set-payload value="#[message.payload.message.payload.INVOICE_NUMBER]" doc:name="EDI"/&gt; &lt;echo-component doc:name="Echo"/&gt; &lt;collection-aggregator timeout="3200" failOnTimeout="false" doc:name="EDI" storePrefix="EDI" /&gt; &lt;smtp:outbound-endpoint host="mail.example.com" to="test@example.com" from="muleservice@example.com" subject="[Invoice Workflow] EDI" responseTimeout="10000" doc:name="EDI"/&gt; &lt;collection-splitter doc:name="Collection Splitter"/&gt; &lt;jdbc:outbound-endpoint exchange-pattern="one-way" queryKey="RouteEDI" queryTimeout="1000" connector-ref="DatabaseMuleLogin" doc:name="Mark Processed in Ross"&gt; &lt;/jdbc:outbound-endpoint&gt; </code></pre> <p>I added an echo component and they are coming out sorted at that point so I'm pretty sure the aggregator is unsorting them.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload