title: Camel AggregationStrategy behaving unexpectedly
body: <p>I have a situation where I want to pass data into an <a href="http://camel.apache.org/aggregator2.html" rel="nofollow noreferrer">Aggregator</a>, but I don't want the aggregator to do anything until it has received messages from 3 distinct routes:</p>
  
  <pre><code>&lt;route id="route-1"&gt;
      &lt;from uri="direct:fizz" /&gt;
  
      &lt;to uri="bean:bean1?method=process" /&gt;
  
      &lt;setHeader headerName="id"&gt;
          &lt;constant&gt;1&lt;/constant&gt;
      &lt;/setHeader&gt;
  
      &lt;to uri="direct:aggregator" /&gt;
  &lt;/route&gt;
  
  &lt;route id="route-2"&gt;
      &lt;from uri="direct:buzz" /&gt;
  
      &lt;to uri="bean:bean2?method=process" /&gt;
  
      &lt;setHeader headerName="id"&gt;
          &lt;constant&gt;2&lt;/constant&gt;
      &lt;/setHeader&gt;
  
      &lt;to uri="direct:aggregator" /&gt;
  &lt;/route&gt;
  
  &lt;route id="route-3"&gt;
      &lt;from uri="direct:foo" /&gt;
  
      &lt;to uri="bean:bean3?method=process" /&gt;
  
      &lt;setHeader headerName="id"&gt;
          &lt;constant&gt;3&lt;/constant&gt;
      &lt;/setHeader&gt;
  
      &lt;to uri="direct:aggregator" /&gt;
  &lt;/route&gt;
  
  &lt;route id="aggregator-route"&gt;
      &lt;from uri="direct:aggregator" /&gt;
  
      &lt;aggregate strategyRef="myAggregationStrategy" completionSize="1"&gt;
          &lt;correlationExpression&gt;
              &lt;simple&gt;header.id&lt;/simple&gt;
          &lt;/correlationExpression&gt;
          &lt;to uri="bean:lastBean?method=process" /&gt;
      &lt;/aggregate&gt;
  &lt;/route&gt;
  </code></pre>
  
  <p>The way this is configured, when the aggregator's <code>completionSize</code> is set to 1 or 2, the aggregated Exchange is routed on to my <code>lastBean</code>. However, if I set <code>completionSize</code> to 3, for some reason, <code>lastBean#process</code> never gets invoked.</p>
  
  <p>I'm <strong>sure</strong> that I'm using <code>header.id</code> and the aggregator incorrectly here. In the <code>correlationExpression</code>, I just need to make sure that we have 1 Message from each of the 3 routes.</p>
  
  <p>So my question: <strong>what do I need to do to make my aggregator "wait" until it has received 1 message from <code>route-1</code>, 1 message from <code>route-2</code> and 1 message from <code>route-3</code>?</strong></p>