Hi Jeff. That's great news. I'm not very Java-savvy, but I've made a few patches to the activemq ajax code in the past. I've spent a bit of time lately trying to get junit test cases working for testing MessageListenerServlet, so I haven't actually made much progress in solving the issue at hand. If you've found the error, that's fantastic. Can you post your patch?
To get a ticket reported, use https://issues.apache.org/jira/secure/CreateIssue!default.jspa. You'll need to register before you can open an issue. If you can attach a patch, I will happily contribute to the testing effort. alex On Dec 14, 2010, at 10:48 AM, Jeff Rose wrote: > Hi Alex, > Thanks for the response. We looked into it a bit more based on your > suggestion, and we discovered that there is an error occurring when the > continuation is resumed in onMessageAvailable in AjaxListener.java. It > looks like this onMessageAvailable handler is being called every time a new > message arrives on the queue, and then it is trying to resume a continuation > that has already been resumed, which causes an illegal state exception. > We've been trying to fix the bug by checking first: > > !continuation.isResumed() > > but we are still getting the error occasionally (although it does often get > all of the messages now). This seems to be a pretty fundamental bug in the > AJAX support of ActiveMQ. Definitely worth posting a ticket (although I > don't know where that is done). > > -Jeff > > > On Fri, Dec 10, 2010 at 6:33 PM, Alex Dean <a...@crackpot.org> wrote: > >> >> On Dec 10, 2010, at 11:06 AM, Jeff Rose wrote: >> >>> Hi, >>> Based on the ajax chat example I've put together a small test page to >>> display messages that I post to a topic or queue using a php script. >> When I >>> send 10 messages in a for loop from PHP then the ajax handler is only >>> getting called with a couple of the messages though. Looking at ActiveMQ >>> with jconsole I can see that all of the messages are getting taken off >> the >>> queue, but they don't all get to the browser. Do I need to do something >>> special in order to make sure I get all of the messages? >>> >>> The relevant code is posted below. Any thoughts or advice would be >>> appreciated. >> >> I've noticed the same issue recently. If I publish 5 messages via a >> ruby+stomp publisher, I receive all 5 in a ruby+stomp consumer, but I only >> see 1 message in a javascript/ajax consumer. The <ajax-response> XML element >> always has only a single <response> element. (I can see this in Firebug.) >> The admin webapp shows that all my messages are being de-queued, so I think >> the ajax servlet is picking up the messages but failing to deliver them to >> the browser. >> >> Just this morning I was poking around in the code trying to see what's >> going on. I have a guess it's in MessageListenterServelet.doMessages(). >> There's some code in there which should put multiple <response> elements >> into a single <ajax-response>, but it's not happening for some reason. >> >> Maybe we should open a ticket for this? >> >> alex