I second this request.
A way to peek into a quorum queue would be very useful; as of now I find it very hard to skip items in a quorum queue. The only way that I've found to do it is extremely slow.
Reason #1: I've already been trying to make a "peek" procedure to list the queue contents (for the user reading leisure). I had to get messages one by one using the RabbitMQ interface instead of the AMQP interface, otherwise I couldn't get around infinite loops. The docs discourage this for performance reasons, but I haven't found another way. It also needs to reject each message, so it's not really 100% "peeking" as it might mix the messages up a bit.
Reason #2: using the AMQP interface for supposedly better performances is instead causing me to go to great workarounds.
In one of my use cases, messages must be processed after a certain delay; think for example of a trashcan where you want to remove stuff after it spends a couple of days there. As using "reject" is causing infinite loops, instead I've been trying to republish-and-ack messages, but this is reeeeaaally slow (like, single digit messages per second).
Reason #3: If there was any scenario where there is a guarantee that the message ordering in the queue does never change, then there would be several possible performance improvements on the application side. In the previous "trashcan" example there are no strict ordering requirements; the trashcan can be emptied in any order, as long as the objects spend a certain amount of time there. A weaker requirement would be that, for every consumer, when the consumer skips from a message to the next message, the next message is published after the first message (i.e. no global order, only per-thread order). In this way, when a message is received, the consumer could just sleep until the message is "old enough". This would avoid scanning the whole queue uselessly looking for messages. But as far as I know this is not doable because even if the consumer does never reject or republish a message, there is no guarantee that if the consumer crashes the message is not moved in a different position in the queue (I would like to be proven wrong).
So, there ... it would be 3 improvements at once. Unless I'm missing another way to accomplish this...
Best regards,
Simone