feat: Support multiple workflow status listeners via composite pattern#740
Draft
akhilpathivada wants to merge 1 commit intoconductor-oss:mainfrom
Draft
Conversation
Author
|
I'll mark this as ready for review once #720 is merged, as this PR is dependent on those changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resolves #727
Summary
Implements support for multiple workflow status listeners using the Composite Pattern, enabling simultaneous publishing of workflow events to multiple destinations (Kafka, queues, webhooks, archive).
Motivation
Previously, Conductor only allowed a single workflow status listener type to be configured via
conductor.workflow-status-listener.type. Users had to choose betweenkafka,queue_publisher,workflow_publisher, orarchive- but could not use multiple simultaneously.This limitation prevented organizations from broadcasting the same workflow events to different systems for different purposes:
Each system has different requirements (stream processing vs guaranteed delivery vs fire-and-forget), different failure domains, and different retention policies.
Changes
Configuration Example
Testing
✅ Unit tests for all workflow event types
✅ Failure isolation tests (single and multiple listener failures)
✅ Edge cases (empty list, single listener)
✅ Verification that all delegates are invoked correctly