In the configuration of Rhino ESB you can specify if an endpoint should be transactional or not like shown below:
<rhino.esb>
<bus threadCount="1"
numberOfRetries="5"
transactional="false"
endpoint="msmq://localhost/myqueue"/>
<messages>
</messages>
</rhino.esb>
If you set it to 'false' like in the example MSMQ messages is created as non-recoverable (default value for the MSMQ Message class Recoverable property).
Would it be an option to add a new 'recoverable' property to the configuration used to specify if the messages should be recoverable when not using transactions?
Combinations of 'transactional' and new 'recoverable properties':
Transactional Recoverable Description
true false Invalid. Should probably raise an exception. Alternatively, as today with transactional=true
true true As today with transactional=true
false false As today with transactional=false
false true New, means that Message.Recoverable will be set to true
Regards
René M. Andersen