Replies: 3 comments
-
You do not need to manually nack a message. If your processing throws an error the message is nacked automatically and the failure-strategy is applied. For that your method parameter should not be a message type.
That is one consumer instance per channel. So if you've multiple channels, there would be one for each channel. The DRT consumer subscribes to all retry topics for that channel and streams the retry message back to the incoming method. Why do you want to create a different consumer per retry-topic ? |
Beta Was this translation helpful? Give feedback.
-
I know and in my case, I need to do some logic on the record headers so that's why I manually nack the record.
ok, so then it's enough to create another channel which consumes from the same topic and I guess, given that each consumer instance will be assigned a specific partition, there wouldn't be no duplicates.
for topic consumer isolation let's say there are 3 dtr :
if one of the retry-topic consumers fails (e.g "foo_retry_3000" fails due a runtime exception) , unfortunately all the other dtr are revoked, I think this happens because the whole consumer-group is revoked. of course, I think in this specific case, it makes sense to revoke all the consumers given that a part of the 'chain' is broken. I noticed the same behaviour when I use a single channel subscribed to multiple topics
|
Beta Was this translation helpful? Give feedback.
-
|
I don't know what can be done here without much complexity. I am converting this to a discussion |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
As far as I understood, when manually nacking an incoming message, this triggers the delayed-retry-topic (DRT) mechanism.
This works fine and I can see the retries being handled as expected.
However, I noticed that there is only one instance of the consumer handling all DRTs.
I was wondering if there is a way to configure a dedicated consumer per specific DRT, rather than a shared one.
I know that I could manually create dedicated consumers, but doing so would cause each message to be processed twice , once by the generic DRT consumer and once by the dedicated one.
Question / Expected Behavior
Is there a configuration option or extension point that would allow each DRT to have its own independent consumer instance?
below an example of my consumer
many thanks in advance
Beta Was this translation helpful? Give feedback.
All reactions