Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Abandoned
-
5.7.0
-
None
-
None
-
windows 7 and windows xp
Description
Using 5.7 REST API I can GET a message from a topic but if a new message is POSTed to that same topic before the GET has been reissued (less than 20ms behind the POST and using the same session as the previous GET) the GET will timeout with a 204 and does not retrieve the message. This may be as designed for topics (queues are not an option) but I am just looking for confirmation. I assumed the first GET would have provided a topic subscription and the broker would hold a topic message for which there is a subscriber for longer than 20ms? This is not a stress test and is recreated with a simple producer and a separate consumer usually within the first couple of message exchanges. It has been noticed that when the topic message is POSTed without an outstanding GET to receive it, the following exception is logged:
2013-01-22 01:09:37,484 | DEBUG | Async client internal exception occurred with no exception listener registered: java.lang.IllegalStateException: DISPATCHED,initial | org.apache.activemq.ActiveMQConnection | ActiveMQ Session Task-1
java.lang.IllegalStateException: DISPATCHED,initial
at org.eclipse.jetty.server.AsyncContinuation.dispatch(AsyncContinuation.java:408)
at org.eclipse.jetty.server.AsyncContinuation.resume(AsyncContinuation.java:815)
at org.apache.activemq.web.MessageServlet$Listener.onMessageAvailable(MessageServlet.java:409)
at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1343)
at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131)
at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202)
at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:129)
at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:47)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Are there any configuration modifications available to have the topic messages retained for at least 1 second?