|
|
|
[
Permlink
| « Hide
]
James Strachan - 07/Mar/07 08:38 AM
I wonder could you try the current 4.1.1 build please? We've fixed a number of issues in the Stomp support to do with handling disconnected stomp consumers which could well fix your issue
Yes I will try that. Can you show me where to find 4.1.1 ?
We'll be releasing 4.1.1. in the next week; until then you could try a snapshot build of it...
e.g. grab one from March 2007 Got it.
issue #2) Ghost subscriber problem is improved. Note on the output from before that I got only odd numbered messages after control-C of a subscriber. Now only message number 0 is missing. -bash-2.05b$ ./activemq_tester -d sub -m 5 Issue #1) Missing messages after STOMP client shutdown ... No change here. See above for test setup and description. Now I'll speculate based on 3 test cases I've been running. So what I think might be happening is that STOMP connector is not really integrated into the broker, it wakes up when that first client comes in and grabs all 100 messages. Then when the second client comes in there are none left for it to get. Then if that first client dies or even stops gracefully, somehow those 100 messages are allocated to the stomp connecter that was talking on that specific tcp/ip socket. all 100 of those messages seem to be "consumed" from the brokers point of view and cannot be made available to any other STOMP clients. Even thought the actual STOMP client has only gotten say 7 of them across the TCP/IP connection (3 second sleep loop after each message) the stomp connecter representing it has grabbed them all from the broker and is hoarding them and won't share, and won't put them back if that socket connection is closed. Keep in mind I know nothing about the internals of JMS brokers, this is speculation based on a combination of 3 test scenarios but it would explain all 3 mis-behaviours that I am seeing. Joel Schaubert Retested with ack set to client during subscribe operations after talking to Hiram.
#1) Ghost client issues are totally resolved in client ack mode #3) New problem in client ack mode So no loss of messages under these conditions but Q is effectively stalled until a new message is written in. Here's some background on prefetch (and how that affects message delivery)...
http://activemq.apache.org/i-do-not-receive-messages-in-my-second-consumer.html I think we should close this issue out as "not a bug" and open a new issue for your #3.
but let me comment on #3 while I'm here.. I think this is due to the socket being killed but the server side not noticing. But it will notice once it tries to send it a message, so the it shutdown the dead socket and redelivers all messages queued for the client. On some OSes the TCP timeout interval can be tweaked. Otherwise, keep alive packets would need to be periodically transmitted in Stomp so that the server could detect a dead client sooner. Keep alives have not been added to Stomp yet.. but could be in a future version. Agreed.
Nice work on resolving the ghost client issue. Part #1 is closed since this was not a bug.
Subscribing with ack set to client ack resolved the issue Part #2 ghost subscriber problem is confirmed fixed in 4.1.1 builds while using client ack subscriptions Part #3 moved to new ticket |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||