0

In order for message to move to undelivered queue in case of maxRelivery attempts, the tibco broker expect to set a jms property JMS_TIBCO_PRESERVE_UNDELIVERED to true. I am not sure how to set this property after the message is consumed.

IntegrationFlows.from(Jms.messageDrivenChannelAdapter(connectionFactory)
                .destination(sourceQueue)
                .configureListenerContainer(spec -> {
                    spec.sessionTransacted(false);
                    spec.sessionAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE);
                })
               .handle(someservice).get();
nagendra
  • 593
  • 1
  • 9
  • 29

1 Answers1

2

This property is for a JMS producer.

That's not too hard to use an .enrichHeaders() to set this value into the headers before sending a message into the .handle(Jms.outboundAdapter()).

See more info here: https://haritibcoblog.com/2017/04/03/tibco-ems-properties-of-queues-and-topics-where-tuning-can-be-done/

Artem Bilan
  • 113,505
  • 11
  • 91
  • 118
  • Thanks for the link, it worked by setting the header while publishing the message. – nagendra Jan 16 '19 at 10:08
  • May be useful for others, If the there is an errorHandler or idempotent receiver configured the message is consumed and not sent to undelivered queue after 2 attempts – nagendra Jan 16 '19 at 22:36