Have a look for:
<subsystem xmlns="urn:jboss:domain:ejb3:1.2"> ... <pools> <bean-instance-pools> ... <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
thanks a lot!
this setting adjusts how many worker threads exists for a queue. Is it possible to change this value while the server is running? I need to do this because the server has different load at different times of a day. If I have a high load I need this value to be 1 and higher if the load is less.
This doesn't seem to be possible right now. I thought you may have had some chance with the Command Line Interface, but the ability to modify the parameters above does not seem to be there yet.
And there was no guarantee that a container restart would not have been needed anyway.
Perhaps you need more (or bigger) servers?
The server is big enough for the current work. However we have to do some long one-time work that produces more load which might be too much for the server. I am currently trying to find out if it is somehow possible to control the load a MDB produces. Any hints appreciated
We'd need to know more about what kind of processing is happening in order to answer this.
If it's long running, you may find transaction timeouts to be an issue.
If you're concerned about impacting users it may be worthwhile hosting the MDBs on another server instance.
The time needed to process one message is really short. However the amount of messages is the problem. There will be around 61 million billion messages in the queue. During the work of a message I need to request another server over http. That's the bottle neck. If only 1 worker thread exists I could ensure that only one request at a time (message) is made. More threads would result in a higher "request per second" rate. I need to control this.
To my knowledge, there is no way to re-activate an MDB. However, you should be able to undeploy the MDB, modify it, and redeploy it without stopping the server.
Is that 61 billion figure right? If you only had one session processing messages and you processed one message every millisecond it would take you 700 days to process 61 billion messages.
I have no experiance how to do this. I'll take a look. Thanks for your response.
Billion was wrong. 61 million is the correct value. 700 days are way too long
EDIT: I just discovered the setting
<consumer-max-rate>.I might be able to use this if it is possible to change the value during runtime.