1

I'm having an issue with rebus (that I'm sure it's me the problem) and here's the issue: I have second level retries enabled. In the normal handler I throw a FailFastException In the IFailed handler I got the message and I do a kind of "delayed" retry (I defer 10 times with a delay of 30s) After all 10 re-tries, I want to finish (aka send to error queue) and for this I'm just throwing a new exception and it "kinda" works.

The issue is in the last step, when I throw the last exception, rebus still retries 5 times (default). So actually I'm retrying 10 times (defer) + 5 times(rebus default fast retry).

Is there any way I can only do the 10 (deferred) times? I can forward to the dead letter queue manually but... it seems hacky.

Also, I use fleet manager, does forwarding the message to the error queue means the message will also be in the fleet manager?

Coastpear
  • 374
  • 2
  • 15

1 Answers1

1

Is there any way I can only do the 10 (deferred) times? I can forward to the dead letter queue manually but... it seems hacky.

Yes, but it requires a little bit of manual work you can do something like this in your 2nd level retry handler:

try
{
    await TrySomethingAlternativeAsync();
}
catch(Exception exception) 
{
    // bummer, it still fails!
    // 
    // just deadletter the message now then
    await bus.Advanced.TrandportMessage.Deadletter(exception);
}

Also, I use fleet manager, does forwarding the message to the error queue means the message will also be in the fleet manager?

Yes

mookid8000
  • 18,258
  • 2
  • 39
  • 63