0

I am seeing a performance degradation when using spring integration

IntegrationFlows.from(Jms.inboundGateway(connectionFactory)
                        .destination("orderQueue")
                        .jmsMessageConverter(new MarshallingMessageConverter(jaxbMarshaller()))
                       .transform(orderTransformer)
                       .handle(orderService, "saveOrder")
                       .get();

same code using JmsListener performs better

 @JmsListener(destination = "orderQueue")
 public void receiveMessage(Message message) throws IOException {
    Order order = (Order)jaxb2Marshaller.unmarshal(new StringSource(((TextMessage) message).getText()));
        OrderDetails orderDetails = orderTransformer.transform(order);
        orderService.saveOrder(orderDetails);
 }

can some one help what needs to be configured in spring integration to perform it well.

nagendra
  • 593
  • 1
  • 9
  • 29

1 Answers1

1

You don’t compare apples with apples. You @JmsListener is one-way handler, according to the void return type. The Inbound Gateway is fo request-reply scenarios

From there I assume that you really don’t return anything from your latest handler. There a JMS thread is blocked for nothing.

Artem Bilan
  • 113,505
  • 11
  • 91
  • 118