Checkpoint

We had a production issue and trying to understand the industry standards or best practices in handling the below scenario.

I have a check point activity and a JMS Queue sender activity in an Iterate group and for every iteration the checkpoint is taking 1500ms to process. This is causing some performance issues and want to avoid the checkpoint in the iterate group, but could not. The main reason we could not avoid is because we want to capture the process instance as soon as a message was sent to JMS queue through checkpoint activity.This way we don't send any duplicate transaction or miss a transaction if the process crashes during iteration.

There should be some other way to handle this kind of a scenario. Can you guys please help me?

I think your code is basically doing the iteraion on set of data and for each data JMS Queue sender is sending the message. Can you do it in another way?

First of all accumulate the data inside the iterate loop.There's an Accu,ulate option using which you can accumulate the set of datas.Outside of the iterate loop use the JMS sender and you can pass the accumulated data.

Hope this will help.
I also request other members to respond to this query..This is a nice question asked by Vijay.

Thanks for the replies.
@Siddharth, I am not sure how will the Engine Command persist the data in case of a crash during an iteration.
@Ramakrushna, I agree with what you said, but it requires a code change in the post process as it now needs to handle the data in batch. The other issue with this approach is we are doing redundant iterations (once to accumulate in pre-process and once in post process to process each transaction).
@Marco, What is the best practice to handle the above situation?

Would be helpful if someone can shed some light on handling these scenarios in an enterprise.