I seem to be having a bit of an issue regarding the messaging paradigm.
Essentially, I am finding that as there is no time guarentees of events getting processed, we have to think about the flow of the “body”.
I am calling my message body when it is the incident + case info
I have to be careful about “duplicating” the body, that is, sending the message away in a queue, and continuing to take action here. as they will loose sync and state.
I would rather just try to ensure the statelessness nature of the message processing code.
In other words, Watson will mark a post as a “first post”, send it to Lestrad to post as a first post.
Initially I wanted to continue processing the body in Watson to further establish state, but there is no way to get the initial time stamp of the initial slack post back into the body that stayed in watson.
Although the timestamps are in postgres and pushed into redis, there is NO guarantee about how long that will take, and no clean way to check if the action has taken place yet or not….
because… I forgot to mention that only one module is allowed talk to redis and postgres. This may well be a terrible architectural decision….
For now, the only solution is to send the body back to watson from Lestrad with the new TS, and let Watson re-establish the state.