0

I'm currently investigating the Smallrye Reactive Messaging integration in Quarkus.Sending and receiving messages is really simple and elegant at first glance.

But one thing which I didn't find out is: How to handle a re-delivery of messages?

Example: We receive a message and try to process it. Some exception (maybe a DB not available or an optimistic lock exception or something) happens. In such a case I would throw an exception so that the message is not acknowledged. But currently I see no way how the message is redelivered.

I set-up a small dummy project to test this:

  • Quarkus
  • ActiveMQ Artemis
  • send a message (via Artemis console) into a queue
    -- queue configured with max redelivery = 3
  • receive the message with Quarkus / Smallrye Reactive Messaging @Incoming annotation
  • throw exception in the @Incoming method
    --> Message is removed from the Artemis queue
    --> @Incoming method is only called once

If I shutdown the Quarkus App, the message can be seen again in the Artemis queue with redelivered flag set to true.

But I find no way how I can manage/configure a redelivery in the Smallrye Reactive Messaging so that this layer handles the redelivery of a message for n times and puts the message into a DLQ after the max retries.

Is there any way to do this?

B--rian
  • 5,578
  • 10
  • 38
  • 89
  • Welcome to SO! I tried to make your question more readable. – B--rian Feb 20 '20 at 11:55
  • Please raise an issue https://github.com/smallrye/smallrye-reactive-messaging/issues for the community of that project to provide assistance – Ken Feb 20 '20 at 14:19
  • You can check smallrye-reactive messaging documentation regarding manual acknowledgement and default strategies :https://smallrye.io/smallrye-reactive-messaging/#_acknowledgement – iabughosh Feb 20 '20 at 18:59

0 Answers0