We do a lot of asynchronous message delivery and need a way to take messages "out of play" then restart them at a later time:
- When the delivery end point is not available and we want a delay before retrying
- Some messages can only be delivered at certain times of the day and new messages must be queued in between.
Am I correct in the view that the Process Continuation feature new in Sonic 8.0 addresses this?
I have looked at the documentation and the sample code and I think I'm missing something.
I follow the steps of creating the XQProcessContinuation, creating a ProcessContinuationHandler and having the calling Process decide that it should end.
Exactly what do I have to serialise/save in the ProcessContinuationHanlder? Are the XQServiceContext and XQMessage part of the XQProcessContinuation or do I have to save them separately? It appears that I'll be using a Level 1 XQProcessContinuation.
Is there any sample code for a ProcessContinuationHandler or does the save method simply Marshal the XQProcessContinuation object?
Now the message is saved in the database and the calling ESB Process decides to end. The message is now "out of play".
Once my background process decides that a message should be "put back into play" how do I go about that? In the sample it looks like some ESB Process has (magically?) got the message from somewhere and called the Continuation Service.
I've had a few ideas but, before I start spending a lot of time, I'd like to hear some suggestions. It is safe to assume that my "background process" responsible for putting messages back into play will be running within the Container as a service, or a thread of my Continuation Service.
Am I on the right track?