Skip to content

Add new PostDaprOutputBinding Reaction #248

@ms-nateb

Description

@ms-nateb
Contributor

Overview of feature request

In this feature we will add support for the Dapr output binding to Drasi as a reaction. This will enable Drasi to output events to many more components and benefit from any additional output bindings added to Dapr. This feature builds on the #226 and brings similar benefits but expands the scope to providers that do not function as PubSub, HTTP for example.

Acceptance criteria

This extension has similar acceptance criteria to #226

  1. Configuration per Query:
    - The reaction MUST allow configuration on a per-Drasi-query basis.
    - Each query configuration MUST specify the target Dapr bindingName and the type of the binding
  2. Event Publishing:
    - The reaction MUST successfully publish Drasi ChangeEvent data (add, update, delete results from a CQ) to the configured Dapr output binding.
    - The reaction MUST support an option to publish Drasi ControlEvent data to the Dapr output binding.
    - The reaction MUST allow configuration to skipControlSignals if only data changes are desired.
  3. Event Formatting:
    - The reaction MUST support publishing events in an "unpacked" format, where individual changes (adds, updates, deletes) or control signals are sent as separate Dapr messages (using Drasi native format).
    - The reaction MUST support an option for a "packed" format, where the entire Drasi ChangeEvent or ControlEvent object is sent as a single Dapr message.
    - The default format SHOULD be "unpacked".
  4. Error Handling & Resilience:
    - Configuration errors (e.g., missing required fields) MUST be detected at startup, and the reaction should fail to start or clearly log the invalid configurations.
  5. Documentation:
    • A README.md file MUST be included, detailing
      - The purpose of the reaction.
      - All configuration parameters (e.g., bindingName, bindingType, packed, skipControlSignals) with descriptions, defaults, and whether they are required.
      - Example reaction.yaml configuration.
      - Basic instructions on how a Dapr microservice can subscribe to and consume events published by this reaction.
      - The structure of the published messages for both packed and unpacked formats.

Additional context

Key Scenarios

  1. Enables connection to Notification Systems including SMTP, SMS and Webhooks.
  2. Enables alternative methods for running workflows based on Drasi queries.

Dapr Documentation: Output Bindings

Would you like to support us?

  • Yes, I would like to support you

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @danielgerlag@ms-nateb

      Issue actions

        Add new PostDaprOutputBinding Reaction · Issue #248 · drasi-project/drasi-platform