-
Notifications
You must be signed in to change notification settings - Fork 0
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
Clarify that only a Channel is subscribable #4
Conversation
- remove Subscribeable interface - Source now requires a Channel ObjectRef - cleanup language arround the role of a Source
If only a Channel can be Subscribable, what's the solution to knative#508? (generally: a Source that is capable of fanout must be fanned out separately due to this restriction) I think there should be a very compelling reason for disallowing a Source to fanout on its own, since that translates directly into decreased efficiency for users and implementers that they cannot overcome. |
Create a new Source for each "Subscription" targeting the result/Sinkable. A Source should be relatively light since most of the infrastructure is now centralized by the provisioner. If there is complex configuration for the Source, a higher order resource can decompose to a set of Sources. |
I'm not sure I understand, can you elaborate on this? What is a "Subscription"? What creates the Source and how does it know about the result? What object contains the result value? |
A source with multiple subscriptions
becomes multiple sources with no subscriptions
Each of Source A, B and C use the same Provisioner and the same configuration except for the |
- A **Source** allows an incoming events from an external system to be | ||
_Subscribable_. A _Subscription_ is used to connect these events to | ||
subsequent processing steps. | ||
- A **Source** emits incoming events to a _Channel_. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fine as in source always puts things into a channel. However, I think it would be nice if a user wouldn't have to go digging into objects and then cut&paste these Channels around when creating pipelines. Hence the ability to deref, just like with Targetable, we could require a user to go in and at the lowest level just say it's a DNS name, same kind of applies here as in it's not ideal, if we think Targetable is a good concept, this is the same but in reverse.
I agree that a source should not create a Channel. This higher level resource you talk here is the |
I am not really sure I do get that |
@grantr In knative#508 I was suggesting that Channels should support more protocols. In my example it was:
|
remove reference that Source has subscriptions
Adding some clarification on 1:1 Source/Channel
- A **Source** allows an incoming events from an external system to be | ||
_Subscribable_. A _Subscription_ is used to connect these events to | ||
subsequent processing steps. | ||
- A **Source** emits incoming events to a _Channel_. | ||
|
||
- A **Channel** provides event persistance and fanout of events from a | ||
well-known input address to multiple outputs described by _Subscriptions_. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think with this change, the drawing in https://docs.google.com/drawings/d/10mmXzDb8S_4_ZG_hcBr7s4HPISyBqcqeJLTXLwkilRc/edit needs update too
merged. |
Trigger filters on event source and type
The Subscription resource already said that the
from
property ObjectRef was required to be a Channel, but the remainder of the spec implied otherwise.