I am new to RabbitMQ and herewith I want to make sure that I am not missing out on some advanced RabbitMQ feature or pattern I am not aware of.
I need to develop a reliable system that processes a few smallish RabbitMQ messages per second (~40/sec). My application receives those messages by subscribing to a RabbitMQ queue (which I do not control). The messages contain data as structured XML. The end goal here is to extract the data from the XML-messages and persist them into an SQL database for later use.
It is important for the queue operator that the messages are acknowledged as quickly as possible, before they are processed. This is more important than the processing latency, i.e. how long it takes for the messages to arrive in the SQL database.
Another requirement is that no message is lost under any circumstances. There is no way to get the information later on via a bulk request.
Currently I am thinking of writing a service which listens to the queue and writes every received message to an Azure Blob Storage with the messages binary body as blob content and the message headers as blob metadata. All fail-over strategies are in this service, too. That way I can record all messages and quickly acknowledge to the queue that I have received them. After that a second service can process them without any time constraints.
I am happy with such an architecture, but I am concerned that I am not aware of a RabbitMQ feature that can handle such a scenario in a more correct way or with less engineering effort.