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.
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** 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.
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
fromproperty ObjectRef was required to be a Channel, but the remainder of the spec implied otherwise.