Feature/event bus enhancement #6873
Open
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.
This PR introduces a more robust Event Bus system to improve reliability, validation, and external accessibility. The following enhancements have been implemented:
✅ Schema Validation for Event Payloads
Added validation using Simple Schema to ensure consistency in event arguments.
Prevents passing incorrect or missing data to listeners.
✅ Pub/Sub System for Event Distribution
Integrated Redis Pub/Sub to prevent event loss in case of pod failures.
Supports adapter-based architecture for future Kafka integration.
Allows multi-pod event consumption for better scalability.
✅ External Webhook Subscription
Added webhook registration support, allowing external processes to receive event notifications.
Implemented payload signing for security using HMAC signatures.
✅ Security & API Key Management
Introduced API keys for external event subscription access control.
Ensures role-based permissions for event visibility.
Affected Files:
src/util/appEvents.js (Refactored event handling)
src/util/pubSub.js (Redis-based event distribution)
src/util/webhookManager.js (Webhook registration and triggering)
src/util/apiKeyManager.js (Secure API key generation)