title: Error trying to consume exchanges from multiple Camel endpoints
body: <p>I am newer to the Camel world and I'm not sure if I'm using the wrong classes for what I want to accomplish. I have two route definitions designed to go to two different direct endpoints. My goal is to process a product and check the message when it ends at an endpoint, resulting in a NPE.</p>
  <pre><code>    RouteDefinition deltaRoute1 = getCamelContext().getRouteDefinition(GoogleCatalogRouteConstants.ROUTE_GOOGLE_DELTA_CATALOG_PROCESSOR_1);
      deltaRoute1.adviceWith(getCamelContext(), new AdviceWithRouteBuilder() {
          @Override
          public void configure() throws Exception {
              weaveByToString(&quot;.*GoogleCatalogProcessor1.*&quot;).selectLast().after().to(&quot;direct:intercept-body-1&quot;);
          }
      });
  
      RouteDefinition deltaRoute2 = getCamelContext().getRouteDefinition(GoogleCatalogRouteConstants.ROUTE_GOOGLE_DELTA_CATALOG_PROCESSOR_2);
      deltaRoute2.adviceWith(getCamelContext(), new AdviceWithRouteBuilder() {
          @Override
          public void configure() throws Exception {
              weaveByToString(&quot;.*GoogleCatalogProcessor2.*&quot;).selectLast().after().to(&quot;direct:intercept-body-2&quot;);
          }
      });
  </code></pre>
  <p>I then process the products with this cucumber step.</p>
  <pre><code>@And(&quot;^the (.*) product is processed$&quot;)
  public void processProduct(String feed) {
      Map&lt;String, Object&gt; headers = new HashMap&lt;&gt;();
      headers.put(ProductIntegrationQueueConstants.JMS_HEADER_TRIGGER_EVENT, ProductIntegrationQueueConstants.JMS_HEADER_TRIGGER_EVENT_CATALOG_CHANGE);
      getProducerTemplate().sendBodyAndHeaders(GoogleCatalogQueueConstants.SEDA_DELTA_GOOGLE_CATALOG_PROCESSOR, context.getProduct(), headers);
      System.out.println(context);
  }
  </code></pre>
  <p>Then I try to receive the messages from their endpoints like this:</p>
  <pre><code>@Then(&quot;^the product is sent to the (.*) (.*) feed&quot;)
  public void assertProductRequest(String origin, String feed) throws Exception {
      List&lt;GoogleBatchProductRequestEntry&gt; requests = new ArrayList&lt;&gt;();
      Long timeoutInMs = 3_000L;
      
      switch (origin.toLowerCase()) {
          case &quot;case1&quot;:
              requests.addAll(getConsumerTemplate().receiveBody(&quot;direct:intercept-body-2&quot;, timeoutInMs, List.class));
              getConsumerTemplate().cleanUp();
              break;
          case &quot;case2&quot;:
              requests.addAll(getConsumerTemplate().receiveBody(&quot;direct:intercept-body-1&quot;, timeoutInMs, List.class));
              getConsumerTemplate().cleanUp();
              break;
          case &quot;both&quot;:
              requests.addAll(getConsumerTemplate().receiveBody(&quot;direct:intercept-body-2&quot;, timeoutInMs, List.class));
              requests.addAll(getConsumerTemplate().receiveBody(&quot;direct:intercept-body-1&quot;, timeoutInMs, List.class));
              break;
      }
  
      logAndAssert(googleProductAsserter.assertGoogleInsertRequest(origin, context.getProduct(), requests));
  }
  </code></pre>
  <p>I'm running a cucumber scenario outline where it runs through the first route, then the second, then both routes. The first two scenarios pass but the third does not. In the third scenario, the Consumer is able to grab the message from the second endpoint but doesn't find the message from the first endpoint. Anyone have any ideas on the best approach to receiving a message sent from one starting point and ending on two endpoints?</p>