From runtime perspective, what is the difference of staging and logging?
While logging is just an additional persistence step, staging changes the transactional behavior of message processing.
For each staging step a context switch in the processing takes place. This means a new message version is persisted, the message is put into the Messaging System queue again and will be processed by another Messaging System consumer thread once a free thread is available. If logging is configured no such context switch will occur.
The thread will persist the message and continue processing.