Skip to content

Connector Transparency (Direct vs Indirect Connection)

Connector transparency describes how much two interacting components know about each other. See the article Software Connector for what a connector is.

Indirect connection. A message channel sits between sender and receiver. The sender does not need to know which application will read the data. Both sides share one assumption: the purpose of the channel, which the channel name expresses. Anyone who reads from it is interested in that kind of data.

What the intermediary gives you:

  • Less knowledge of the other side. The sender does not name its receivers.
  • Independent timing. Sender and receiver do not have to run at the same time. Sending a message does not require both systems to be ready.
  • Broadcast. Because the two sides are decoupled, integrators can send one message to many receivers.
  • Changes in transit. The intermediary can transform messages without the sender or receiver knowing.

Publish-subscribe. The publisher sends an event to one input channel. The channel delivers a copy to every subscriber. It splits into one output channel per subscriber. The publisher never names its recipients. See Publish/Subscribe Channel and Message Channel.

Low coupling. With event notification, the source does not care about the response. That keeps coupling low. See Loose Coupling for the general idea.

An online shop publishes an “order placed” event to a channel. A billing service and a shipping service each subscribe. The shop code never mentions either one. If the shipping service is down for an hour, it can still handle the event when it returns. Later, a team adds a reporting service as a third subscriber. The shop code does not change.

Indirection hides the overall flow. It is hard to see in any program text. Often the only way to discover it is to monitor a running system. This makes tracing and debugging harder.

A publisher sends to one channel. The channel delivers a copy to each subscriber, and the publisher knows none of them.

Diagram source
flowchart LR
P[Publisher] --> C((Channel))
C --> S1[Subscriber A]
C --> S2[Subscriber B]
C --> S3[Subscriber C]
  • Each message channel or topic has a documented purpose, because the channel name is the assumption sender and receiver share.
  • Where publishers broadcast events, the document says that each subscriber gets its own copy and the publisher does not name recipients.
  • For event-based flows, the document describes the end-to-end flow somewhere explicit, since it is not visible in program text.