0

I have a spring integration project. Which reads message from the qpid queue and starts some processing. To mu understanding once message is read it should be cleared from the queue.

But Even after the processing is complete. The message stays in queue in acquired state. Even if i clear the queue and drop new message the message is not picked up by the adapter.

Following is my configuration.

<jms:message-driven-channel-adapter destination-name="incoming.queue" channel="transform-jms-message-channel"                                      connection-factory="qpidConnectionFactory"
          concurrent-consumers="1" error-channel="errorChannel" acknowledge="transacted" />

<int:transformer input-channel="transform-jms-message-channel" id="reportRequestTransformer" ref="reportRequestMessageTransformer" method="transform"
    output-channel="validate-parameters-channel"/>

Any help is appreciated.

  • `>starts some processing` - the message won't be removed until processing is complete and the transaction is committed. – Gary Russell May 04 '18 at 14:15
  • Thanks Gary for the reply. I am not doing in dB operations as such. So how do complete the flow. Currently I am using null channel as output channel in my end state. – Prachit Raorane May 05 '18 at 06:20
  • 1
    I didn't say anything about a DB; you properly have `acknowledge="transacted"` which means when the flow completes and the thread returns to the adapter, the JMS transaction will be committed and the message removed. If you are not seeing that then, most likely, the thread is "stuck" someplace in your code; a thread dump and a DEBUG log should help you figure it out. – Gary Russell May 05 '18 at 13:56
  • Can you tell us precisely what software components you are using? Which client libraries? Which Broker (Apache Qpid has two: Apache Qpid CPP Broker and Broker-J)? Which versions? Separately, getting an AMQP protocol trace as you reproduce your problem will probably shed light on your problem. – k-wall May 07 '18 at 06:44
  • Hi All, It seems there is an thread which remains in waiting state because of which the messages are never deleted from the Queue. I have posted a followup question. https://stackoverflow.com/questions/50250998/task-executor-spring-integration-subsequent-service-activators-are-executed-as – Prachit Raorane May 09 '18 at 10:22

0 Answers0