Yes it is possible that message dead-lettered multiple time.
To see reason(s) why message was dead-lettered, look into x-death
header, which is array sorted most-recent-first, so latest reason why message was dead-lettered is first.
For more details look into Dead-Lettered Messages section in Dead Letter Exchanges manual.
UPD:
Discussed in RabbitMQ official user group about Is it possible to to move dead-lettered message only if it was rejected? :
...
My concern is the following: since the messaged are already
dead-lettered by TTL is there any way to move them from Queue2 to Queue3
only if they are rejected?
To strictly answer your question, no: you can't choose on which events
to dead-letter.
However, I think what you're really asking is "won't all messages from
queue2 immediately dead-letter to queue3 since they have already
dead-lettered once?" And the answer to that is no; once a message has
been dead-lettered to queue2 it is then a free agent and will only be
dead-lettered again if it does something dead-letterable again.