Retry already sucessful message with Service Insights

Is there an option to retry a message which was already sucessfully processed?
Two options I see, turn green message to red and retry
or something via API

is there a built in approach?

This is not currently supported but there is a GitHub issue to track it. I’ve added a comment indicating your interest. I recommend subscribing to the issue to be informed when we work on it.

Out of interest, why do you need this feature? Do you have a single message that needs to be replayed because it was not processed the way you intended? Or do you have a batch of messages that need replaying because of a fault in the handler which has now been fixed? Do you need to replay the messages exactly as they are or do you need to modify them in some way before they are reprocessed? Knowing more details about your use case makes it easier to think about the solution.

In rare cases we need to re-process some messages. That can be a batch of the same message type or just a few. We don’t need to modify the messages before replaying, it could be that we have to do some fixes in the handler first.

At the moment we don’t have the need to do that, but we want to be prepared to have a solution when it is required. Do you have any workarounds until it is provided as a feature, e.g. modifying the state of the message in ravenDB?

@MikeMinutillo do you have any suggestion how to retry a green message currently, without the feature?

The best thing to do is to use ServiceInsight to gather the body and header information for the message and then write some custom code to send the message again. Our documentation contains a section for each transport with instructions on what you will need (often with code samples):

Amazon SQS Documentation Sample Code
Azure Service Bus Documentation Sample Code
Azure Storgae Queues Documentation Sample Code
MSMQ Documentation
Rabbit MQ Documentation Sample Code
SQL Transport Documentation Sample Code

If you’re using Outbox then you will need to consider altering the NServiceBus.MessageId header. If you do not, the Outbox may de-duplicate the message and it will not be reprocessed.