Store the time you want to show it again (long) in a db or kvs
use a resheduling service
In the service check if the time < storedestinationtime then reshedule service in 3 hours.
if the service reaches the time you can show the notification and set a new destinationtime