Idempotent 'create' commands

My application needs its command interface to be idempotent.
For update commands I see no other option other than allowing commands to be replayed - we will have to live with multiple updated events each simply repeating the previous update. But for create commands - what should I do? What is the CQRS best practise?

I can use the repo to load the aggregate before I fire the create command, and catch the AggregateNotFound exception, but I would rather not have my logs littered with stack traces...

Or should I use the query model to check for the pre-existence of the aggregate?



Have decided to use the Command model to check for pre-existence, rather than create a further dependency on the Query model.
But would still be interested to hear how others have approached this...

This concern is part of your domain. Create an interface that uses the query model from the command handler. You may also want to review the Reservation design pattern.