I really like the question as it goes deeper for the fun stuff :)
You can guarantee order by running single consumer on given channel (queue).
If you want to run concurrently and keep the ordering, you can have multiple channels and route the message based on the headers using Router (https://docs.ecotone.tech/messaging/messaging-concepts/message-endpoint/message-routing).
Guaranteed delivery in case of Amqp is at least once. However Ecotone by default provides idempotent consumer implemention (https://docs.ecotone.tech/modules/dbal-support#deduplication-idempotent-consumer).