I have configured Flume to read messages from a Tibco EMS queue with the following configuration:
a.sources.jms.type = jms
a.sources.jms.initialContextFactory = com.tibco.tibjms.naming.TibjmsInitialContextFactory
a.sources.jms.connectionFactory = QueueConnectionFactory
a.sources.jms.providerURL = tcp://host:7222
a.sources.jms.destinationName = <queue_name>
a.sources.jms.destinationType = queue
a.sources.jms.channels = mem-ch
This seems to work pretty fine, except that the Tibco EMS queue has a very high number of pending messages. My understanding is that no ACKs are sent back, and at a first glance this hypothesis has seemed to be confirmed by the fact that in the filehttps://github.com/apache/flume/blob/trunk/flume-ng-sources/flume-jms-source/src/main/java/org/apache/flume/source/jms/JMSMessageConsumer.java
the session is created as follows
session = connection.createSession(true, Session.SESSION_TRANSACTED);
whereas in this specific case it should be AUTO_ACKNOWLEDGE. However, after changing the flume-jms-source.jar file and doing a simple experiment with a small bunch of messages, I have got the the same
results: pendingMsgs is equal to the amount of messages actually sent - I
say actually, because Flume has successfully consumed the messages, but Tibco doesn't see that. So, in the end I have got same situation as before.
Does anybody know where I should have a look at? I don't have access to Tibco EMS settings - as this is part of another system - but I may ask the admin to provide me some settings, if necessary.
I would really appreciate your help.
Thanks a lot in advance.