I am implementing CQRS model on GAE. So, as per the design whatever commands we publish on aggregate will generate one or more Events and publish. Those events has to be handled asynchronously. At the same time the event handling Sagas can generate new commands required to update other Aggregates.
For handling Events asynchronously I am planning to use GAE Task Queue(Push Queue). But in Task Queue documentation it is stated that the a task can run one or more times and should be idempotent. But I cannot make Events/Commands result as idempotent. Same command might execute and will update read-models in inconsistent way.
Is there any other service to process Events/Commands asynchronously from GAE? or any design suggestions for making Event/Commands idempotent?