Receiving messages via receiveNoWait()

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Receiving messages via receiveNoWait()

Andreas Gies
Hello all,

we are using ActiveMQ 5.15.6 in our application. The application is
built on top of OSGi and uses
ActiveMQ as an embedded Broker within the container. The container
establishes a single intraVM
connection to the broker, messages are being sent and consumed in
several sessions reusing the
same connection. External clients may establish connections via SSL to
send or consume messages.

Essentially, each of our containers serves as a self-contained message
router taking dispatching
dispatching messages from one technology to another.

The core of our ActiveMQ listener is implemented as an Akka Stream
Source, which tries to consume
messages regularly using a receiveNoWait.

I have now seen in our integration tests, that in ~one of 100 runs the
integration test fails. According to
the log files the consumer polls for messages, but none are delivered
even if a message is available in
the destination.

Is receiveNoWait() the proper mechanism to consume messages in a polling
fashion ? Should I use
receive(timeout) instead ? If so, what would be a reasonable value for
the timeout ?

In this particular use case we do not want to use an event driven
consumer as the stream source
has to wait until the message is processed, so that we can explicitly
acknowledge the received message
using msg.acknowledge().


Any hints how I could debug this issue further would be greatly
appreciated.

Best regards

Andreas