In those scenerio you can go ahead and do something extra...
Keep a list of Keys in your highly updating object, and whenevr you process one insert and update it into main updating object make sure you put the key in this object's list property.,SO your main object will know if i have got the content of this insert or not
Say after it when you are deleting or updating insert object ..
then when next time you get the same insert(as it was faile when you were marking it as processed), check if key exists in list.... if yes then mark the insert object processed and also remove it from list property.
Also then you need to have a another job which will clean the list property from updating object. read the object list..get the insert object for each key, if they are marked as processed then remove it from this list.
this will eventually increase your datatsore put but you will not have to worry about some inconsistency.
So you code will look like this
Highly updating object will have property liek this
List<Key> processedInserts; (in Java JDO)
TASK -1
1) getNextInsert object say i1, assume its key is k1
//at this atge say processedInserts is empty
2) check if k1 exists in processedInserts, if no then go to step 3 else go to 4
3) update Highly updating object with content of insert object i1, also add the k1 into processedInserts
//at this stage it will have k1 in processedInserts
4) Update i1 as processed.
Now after this we will have a growing list of processedInserts property...and it has upper boud. So to keep it down. you need to have another job running once in a while or submit a task depending on step2, if processedInserts.size > some number say 500.
TASK -2
In this task
1) getHighlyUpdatingObject
2) Loop through processedInserts
3) get Insert Object , if it is processed delete that key from processedInserts
Just make sure one of the TASK-1 and TASK2 running at one time. You can even run task-2 as part task-1 after step 4, upto you where you see it as safe and less If then else :)