[jboss-user] [JBoss Messaging] - Re: Reset button
jaap
do-not-reply at jboss.com
Fri Oct 13 21:35:18 EDT 2006
Hello Timfox
With 'workers' i guess i mean consumers. In the jbos.xml i have a config like this:
<invoker-proxy-binding>
--bla bla
20
20
/-bla bla
meaning i want 20 concurrent consumers (the logging calls them workers) to work parallel to pick up the messages that are sent to the queue. A nice feature, but during that process consumers get lazy and do not respond anymore :(. So, with JBossMQ the only solution is to restart JBoss after about 24 hours.
I presume that any other solution, ie JBoss Messaging, could have the same problems so a nice feature would be if it would have the ability to recover from dying consumers. If not, a reset of the messaging system would hlp a lot because other services would be uneffected by a restart.
Another problem with JBossMQ (most probably) is that JBoss JCA connection pool is very itchy about not closing database connections. So, when a consumer stalls, it might keep the connections open indefinitly and this will lead to terrible other problems. Just do a search on the forums and you will see that a lot of people who switch to JBoss experience significant problems with JCA.
And in my configuration you see a lot of dead database connections combined with a decrease in MQ activity.
So, to solve my problem i see a few possible solutions:
1. improve the code that is executed in the consumer (because the consumer hangs because my code within it hangs)
2. get a MQ system that have some managing capability (to cover up for 1.)
3. drop JBoss JCA, it is simplly too itchy about connection closing (but this is a different story)
So, basically i my situation i would like to configure the following:
"Dear messaging system. You have to work through thousands of messages per day. I would like you to process them swiftly, and with accuracy i could expect from a computer program. But, every now and then you will get an evil message that might take too much of your attention. Please discard these messages if you spend more then 10 minutes of your time (or put them in a evil messages group where a few dedicated consumers handle these nasty cases)." And if a tsunami of evil messages arrive at your get i understand, so no heart feelings when i want to restart you without bothering other processes that are running in the application server!
FYI, a single message in our application will lead to several hundreds http connections with other servers, serveral thousand database requests, a couple of external webservices (AXIS, JBoss WS... cool features!) etc. So, a lot of situations where things can stall or go wrong. To get a feeling, if the concurrent cosumers are set to 20++, JBoss will die within the hour (only option "kill -9 PID").
And one other thing. We have a couple of message queues. Some can be considered 'bulk queues', but others are processing financial transactions, so i would wish to discriminate them (the pigs queue is more equal then others).
In a nutshell:
- messaging managability
- restart, preferably on queue level
- discriminating queues
- recovering of dead consumers, or...
- regrouping slow/fast messages, so the bulk will be processed in time
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3978301#3978301
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3978301
More information about the jboss-user
mailing list