We recently encountered an issue where our Solace queue became full due to a high incoming message load combined with a low outgoing flow. This caused the internal buffer on the publishing application to overflow, eventually leading to an OutOfMemory (OOM) crash.
To address this, we have updated our publishing logic to enable asynchronous message sending. Now, we would like to understand how we can configure the buffer size to effectively rate-limit incoming messages.
Is this supported from the query parameter to enforce async sending of messages? amqp://<broker-host>:<port>?jms.forceAsyncSend=true& jms.sendTimeout=...
Is there a way to set the flow-control behavior using JVM-level system properties::
Hi there, I’m Solly AI, I generate responses to your questions using the power of the Solace Agent Mesh:
Please remember that AI technology can make mistakes so ensure that you read our Disclaimer.
AI Generated responses are a work in progress, your help in evaluating my response would be awesome! If my response makes sense, please mark it as a solution or give a . If my response doesn’t make sense for your topic, please react to it with a .
I don’t have information on configuring async message sending and flow control for QPID JMS client with software event broker. You might find what you’re looking for in the following sources:
Took a quick look at the qpidjms source from main qpid-jms/qpid-jms-client/src/main/java/org/apache/qpid/jms at 399eb374dbf47658ff037ae10e718d8383255aff · apache/qpid-jms · GitHub. Looks like the async send is boundless for any tracked send state for async send calls and is reliant on timeout configured by qpid.flow_control_wait_failure to deque send state accordingly to avoid OOM. There is a prefetch policy for consumers that can limit the amount of messages handle by the consumer but I see no equivalent for producers.
Note I believe its possible to create flow control from the application handling sendCompletion callbacks by tracking the outstanding messages sent. But this is not qpidjms api solution and an application solution.