knative / knative/eventing

Support `one-offs` for firing events only once

Open
#6,302 10 comments 1 reaction 0 assignees View on GitHub
area/api area/sources kind/feature-request triage/accepted
Dominant language
Go
Stars
1.6k
Forks
631
Avg merge
2d 1h
Merged PRs (30d)
6

Description

**Problem**

As a user I want to fire (schedule) an action (alarm/script) or event once at a particular time. This can be done by emitting an event "once" (ignoring distr. sys challenges for a second) with customizable `data` at a particular point in time.

cc/ @lionelvillard

Links:
- https://twitter.com/embano1/status/1511613644777439234?s=20&t=XN6gjYCX3lXsFWLAaKp-Hg
- https://knative.slack.com/archives/C9JP909F0/p1649248557443529?thread_ts=1649234703.449399&cid=C9JP909F0

**[Persona:](https://github.com/knative/eventing/blob/main/docs/personas.md)**
Developers, DevOps, operators

**Exit Criteria**
A Knative resource which lets a user fire an event once at a particular time.

- Specify `data` for event which should be fired
- Specify `start` (optionally `end`) timeframe for which the event should be valid (TTL?)

**Time Estimate (optional):**
1 week.

**Additional context (optional)**

Evaluated but not meeting exit criteria:

- Knative `PingSource`: follows `cron` pattern, i.e. recurring schedule and not "only once"
- Kubernetes `Job` with [`suspension`](https://kubernetes.io/docs/concepts/workloads/controllers/job/#suspending-a-job) which requires a custom controller (logic) and has not simple UX in my opinion (also is not event-oriented)

Contributor guide

Open the contributing guide

Research direction

Start with docs/personas.md, then compare the existing Knative PingSource behavior with Kubernetes Job suspension and the stated event-oriented requirements. Define the resource and its scheduling semantics around one event, custom data, and optional start/end validity; done means a user can fire an event once at a particular time.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes
Domain
backend, cloud, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.