I'm glad you found a fix. If I understand correctly, the broker accepts those messages with an open transaction when run under Windows but not under Linux. That sounds very unexpected given that the broker is a Java process that should run identically on any O/S, and it would indicate a bug in ActiveMQ (or the JVM). When you have a little time, would you please boil down your producer and consumer code and your broker config to produce a minimal setup that sends messages under Windows but (correctly) doesn't send them under Linux? Once you have that, create a bug in JIRA and attach your code and config and someone can look at what causes this apparent difference in behavior.
Tim On May 4, 2015 7:43 AM, "tiger3" <hli...@gmail.com> wrote: > Thanks for the reply, Tim. Days and weekend hours were spent in the > investigation of many possible causes of this issue. Eventually, I found > that the transaction was turned on for the session while the commit() was > never called. That is the root cause of the issue, very simple. > > However, I just could not believe such a problem was not emerged long ago > in > the project I am on. That piece of buggy code has been there for quite a > few > months and tested many times without seeing this problem. In other words, > the commit() was not called, and the message was put into the queue without > problem with transactional=true. This is something I still feel mysterious. > > Thanks. > > > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/message-is-not-shown-in-queue-of-activemq-broker-though-it-is-sent-tp4695998p4696038.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. >