I have been working on a message buffer plugin. Wanted to check with the community while “tightening the screws” to see if functions are covered:
The plugin provides a message buffer for correlating messages. Most common use case is when you have race conditions where the message sender sends the message before camunda is ready to receive the message. If the message message correlation returns no results or not the expected number of results, then will try again with the following features:
- Configurable Exponential Backoff with optional max duration at which point its state is changed for intervention
- Configurable Optional Expected matches in correlations (“are you expecting 3 correlations with this message?, if yes, then if only 2 correlations occurred, then it will attempt again until the 3 match is made”)
- Optional Long Poll to wait for a response: Similar to how you can message with results, but if your message sender requires a confirmation then it can wait for it (non-blocking reactive)
- Configs for Max Events in Buffer
- Pause Correlation attemps
- Manual Retry of correlation
- Full history of messages received, what correlation query was used, when each correlation attempt occurred, and what process instances / executions the message was correlated with. (configurable for max size)
- Metadata store for message sending details (what system sent the message, etc)
- Delegate code support so scripting and delegates can push messages into the buffer for correlation
- Permissions support: to set simple or complex permissions for who can send messages and to what instances/excutions, and with what variables, etc.
- Query API to see what messages are not correlated, which have completed, etc.
- Optional callback URL to notify the message sender that the message was correlated.
Any features that people have come across that they tend to need in these use cases?