Hi, Sachin,
Holding on to messages for hours for processing is an anti-pattern for Cloud Pub/Sub. With messages outstanding for that long, you run a large risk of messages being redelivered, which is what you are running into. You'd be better off writing the message to some kind of persistent storage once you receive it and then acking the message at that point, ensuring you then process any messages that are still in persistent storage. In this scenario, you may find that Pub/Sub is not well suited to your use case and that you are better off just writing to persistent storage directly instead of publishing a message.
Regards,
Kamal