The Send Adapter commits changes per message and per object. This means commits cannot span messages. Within a message, changes to an object are all committed together. To ensure changes are all or nothing, therefore, the strategy you need to use is one message per object.
See the entire answer