# Publish/Subscribe Pattern

Record: `arch:publish-subscribe-pattern`
Kind: pattern
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: contextual
Scope: integration, eventing
Canonical: https://banes-lab.com/ontology#arch-publish-subscribe-pattern

## Repair

- Refactored by: Introduce Topic/Event Bus
- Detected by: direct calls to subscriber list
- Violated by: publisher knowing all subscribers
- Measured by: publisher-subscriber coupling
- Enforced by: messaging contracts

## requires

- [Publisher](https://banes-lab.com/records/lex/publisher.md)
- [Subscriber](https://banes-lab.com/records/lex/subscriber.md)
- [Broker/Event Bus](https://banes-lab.com/records/lex/broker-event-bus.md)

## reinforces

- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)

## enables

- [Fan-Out Notification](https://banes-lab.com/records/lex/fan-out-notification.md)

## conflicts-with

- [Direct Point-to-Point Calls](https://banes-lab.com/records/lex/direct-point-to-point-calls.md)

## tensions-with

- [Delivery Ordering](https://banes-lab.com/records/lex/delivery-ordering.md)

## tensions

- [Publish/Subscribe Pattern Delivery Ordering](https://banes-lab.com/records/tension/delivery-ordering-publish-subscribe-pattern.md)
