1 Reply Latest reply on Oct 5, 2010 3:55 AM by Michael Burman

    Handle the timeout of the aggregator

    Reto Huber Newbie

      Hi,

       

      I’m trying to find out how to proceed if the aggregator doesn’t get all expected messages and runs into a time out.

       

      In my case the actions after the aggregator are never called if I get a timeout. Is there a way to proceed on timeouts? How can I get the messages the aggregator received so far? What did I miss?

       

      Thank for your hints!

      Reto

       

      (I’m using JBossESB Server 4.9)

       

       

      {code:xml}

      ....

      <action class="org.jboss.soa.esb.actions.Aggregator" name="Aggregator">

          <property name="timeoutInMillies" value="13000"/>

      </action>


      <!-- This action is not called in case of a time out -->

      <action name="printNr2" class="org.jboss.soa.esb.actions.SystemPrintln">

          <property name="message" value="...Some Output" />

      </action>

      ....

      {code}

        • 1. Re: Handle the timeout of the aggregator
          Michael Burman Newbie

          Hi,

           

          Relating question (I think above process is correct, if it timeouts, it's not supposed to be processed) on how to handle the timeouts or to prevent them actually from happening.

           

          I have a service, which splits the action to two other services and aggregates them later. One of these services is kinda slow, takes ~200 ms per message per processing core. I have situations, where customer processes their messages as a batch and sends them to us, up to 200 000 messages at once. They're processed quickly in the preceding processes and then they come to the "splitter". Which splits them fine, but there's no way the following services could handle them in any fashionable time.

           

          Is there a way to limit the amount of messages the splitter keeps sending to the following services? Is there a some sort of highWaterMark sniffer or such, which would then start throttling? I know I could just set the timeout to null (JBESB-1440), but then I wouldn't be able to pickup errors (if the other service dies, I want the messages to timeout and then follow the DLQ).

           

            - Micke