Closed dfarr closed 2 months ago
Attention: Patch coverage is 54.70790%
with 659 lines
in your changes missing coverage. Please review.
Project coverage is 55.96%. Comparing base (
4226d32
) to head (f228c2c
). Report is 2 commits behind head on main.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Add router and sender subsystems.
Router
A router submission/completion matches and returns a create task command when a corresponding task must be created in the same transaction as a promise.
The router subsystem can be configured with a list of sources that will be applied against all create promise requests in order, the first source to match "wins" and subsequent sources are not checked. The following is an example configuration:
The PR implements a tag source (as indicated by
type: "tag"
), this is currently the only supported source. Tag sources match any promise with the tag named in the config and extract a receiver by:If the tag value is assumed to be a logical receiver the string value of the tag is stored as the receiver and mapped to a physical receiver in the sender subsystem.
Sender
A sender submission/completion takes a task (which includes a receiver and the id/counter needed for the body of the message) and indicates if the "enqueue" was successful or unsuccessful.
The sender subsystem can be configured with plugins that implement a plugin interface.
This PR implements the http plugin, which is currently the only supported plugin. Additionally, the sender subsystem can be configured with targets (aka physical receivers), if this subsystem get a receiver that is a string it looks up the corresponding physical receiver from this list. The following is an example configuration: