Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Extend the Pub/Sub API with delayed event scheduling #2675

Open
mmisztal1980 opened this issue Jan 17, 2021 · 26 comments
Open
Assignees

Comments

@mmisztal1980
Copy link

mmisztal1980 commented Jan 17, 2021

In what area(s)?

/area runtime

Describe the feature

At this moment the Dapr pubsub's event publishing API supports publishing only, please consider extending this API with delayed event scheduling.

A user should be able to messages to a pubsub for delayed processing.
Examples:

  • Scheduling a job to become available for processing by a system at a certain time.
  • Scheduling reminders/notifications
  • Improving resiliency by introducing exponential backoff after a service fails to process an event, while guaranteeing that the message is persisted by the pubsub backend

Requirements

  • This capability realizes a pubsub that supports a reliable distributed time-based scheduler, and the some of the pubsub backends support it already (there might be more, I'm not familiar with all supported backends):
  • When attempting to schedule an event on to an unsupported pubsub backend an exception should be thrown
  • Scheduled events should not be received by the subscribers until the defined enqueue time. Before that time, scheduled events should be cancellable. Cancellation should delete the event from the pubsub backend.

Release Note

RELEASE NOTE:
N/A

@mrchypark
Copy link
Contributor

mrchypark commented Jan 18, 2021

How about creating a service that has a queue to publish to pubsub on a schedule that treat as state? This way can support the functionality for all pubsubs. And how about implement using virtual actor?

@artursouza
Copy link
Member

This feature can be implemented using metadata when message is published and the scheduling information passed through to the component. A draft PR with this idea, or something else can be a good starter to evaluate how to address this.

There are other solutions too, like @mrchypark but Dapr can expose additional capabilities via metadata.

@github-actions
Copy link

This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or "no stalebot" or other activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale Issues and PRs without response label Jun 24, 2021
@dapr-bot
Copy link
Collaborator

dapr-bot commented Jul 1, 2021

This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as pinned, good first issue, help wanted or triaged/resolved. Thank you for your contributions.

@dapr-bot dapr-bot closed this as completed Jul 1, 2021
@Shiko1st
Copy link

Shiko1st commented Jan 6, 2022

How about creating a service that has a queue to publish to pubsub on a schedule that treat as state? This way can support the functionality for all pubsubs. And how about implement using virtual actor?

Azure Service Bus supports this feature out-of-the-box, no need to invent a wheel, just a way to use ASB scheduling via dapr call...

@yaron2 yaron2 reopened this Jan 6, 2022
@dapr-bot dapr-bot removed the stale Issues and PRs without response label Jan 6, 2022
@geekgao
Copy link

geekgao commented Jan 14, 2022

That's useful

@itsoli91
Copy link

itsoli91 commented Feb 22, 2022

It's an important feature and already is supported by Azure Service Bus.

@dapr-bot
Copy link
Collaborator

This issue has been automatically marked as stale because it has not had activity in the last 60 days. It will be closed in the next 7 days unless it is tagged (pinned, good first issue, help wanted or triaged/resolved) or other activity occurs. Thank you for your contributions.

@dapr-bot dapr-bot added stale Issues and PRs without response and removed stale Issues and PRs without response labels Apr 23, 2022
@Shiko1st
Copy link

Seems nobody cares...

@yaron2
Copy link
Member

yaron2 commented Apr 23, 2022

Seems nobody cares...

Oh, folks care. Just 2 days ago I spoke with several end users who are very interested in this. I'll see if we can triage to 1.8 or 1.9.

@calvin2021y
Copy link

any update?

@dapr-bot
Copy link
Collaborator

This issue has been automatically marked as stale because it has not had activity in the last 60 days. It will be closed in the next 7 days unless it is tagged (pinned, good first issue, help wanted or triaged/resolved) or other activity occurs. Thank you for your contributions.

@dapr-bot dapr-bot added the stale Issues and PRs without response label Jul 30, 2022
@Shiko1st
Copy link

@yaron2 any news?

@dapr-bot dapr-bot removed the stale Issues and PRs without response label Jul 30, 2022
@eyeye
Copy link

eyeye commented Aug 12, 2022

waiting for progress.

@abhijeethaval
Copy link

This will be very useful feature.

@dapr-bot
Copy link
Collaborator

This issue has been automatically marked as stale because it has not had activity in the last 60 days. It will be closed in the next 7 days unless it is tagged (pinned, good first issue, help wanted or triaged/resolved) or other activity occurs. Thank you for your contributions.

@dapr-bot dapr-bot added stale Issues and PRs without response and removed stale Issues and PRs without response labels Oct 22, 2022
@mmisztal1980
Copy link
Author

no point in keeping this open

@DataWorm
Copy link

We are still interested in this feature. From our point of view, there is still a reason to keep it open! ;-)

@Shiko1st
Copy link

Yes, we are, but seems nobody cares )))

@Shiko1st
Copy link

Shiko1st commented Oct 23, 2022

no point in keeping this open

Is this feature now available?

@yaron2 yaron2 reopened this Oct 23, 2022
@yaron2 yaron2 added this to the v1.10 milestone Oct 23, 2022
@yaron2
Copy link
Member

yaron2 commented Oct 23, 2022

Triaged into 1.10. I believe this should be doable. If anyone from the community interested in this feature wants to take the lead and help with design and implementation, that would greatly help.

@yaron2 yaron2 removed this from the v1.10 milestone Nov 22, 2022
@yaron2
Copy link
Member

yaron2 commented Nov 23, 2022

Hi all, this feature is now at the proposal stage here: dapr/proposals#12.

@yaron2 yaron2 added this to the v1.10 milestone Dec 5, 2022
@yaron2 yaron2 added P1 and removed P2 labels Feb 1, 2023
@yaron2 yaron2 modified the milestones: v1.10, v1.11 Feb 1, 2023
@ytatipaka
Copy link

ytatipaka commented Feb 7, 2023

We are having exactly same requirement for one of our dapr/pulsar usecase. As it is not available in current implementation, we might need to go with alternate approach for time being.

@christcottrell
Copy link

Just checking to see if there are plans to include this or this is being worked on. Is this project still going? Is DAPR viable? I can't even get the demo for pub sub to work and raised an issue for it and no response at all. Weeks before it was working, but seems like some change broke it.

@artursouza artursouza modified the milestones: v1.11, v1.12 May 26, 2023
@clintsinger
Copy link

I was thinking that it would be great to have the Actor Reminder feature outside of actors. Sometimes you just need to schedule an event that fires at some point in the future. Building it into the pubsub system would be a great alternative without having to go through all of the boilerplate for setting up an actor for just this purpose.

@yaron2
Copy link
Member

yaron2 commented Jun 27, 2023

I was thinking that it would be great to have the Actor Reminder feature outside of actors. Sometimes you just need to schedule an event that fires at some point in the future. Building it into the pubsub system would be a great alternative without having to go through all of the boilerplate for setting up an actor for just this purpose.

This is being designed

@artursouza artursouza removed this from the v1.12 milestone Jun 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests