Event / Messaging / Asynchronous Architecture
Kind: category
Record: architecture-category:event-messaging-asynchronous-architecture
Canonical: Ontology
The Event / Messaging / Asynchronous Architecture category holds 19 architecture principles.
Listed in Principle categories, after SOLID / Object-Oriented Design and before Error Handling / Resilience.
Principle
- Event-Driven Architecture
- Publish/Subscribe Pattern
- Message Queue
- Message Broker
- Event Bus
- Event Stream
- Event Sourcing
- Command Query Responsibility Segregation (CQRS)
- Domain Events
- Integration Events
- Asynchronous Communication
- Eventual Consistency
- Saga Pattern
- Outbox Pattern
- Compensating Transaction
- Append-Only Log
- Dead-Letter Queue
- Idempotent Consumer
- Competing Consumers
Layer
Linked from
Event / Messaging / Asynchronous Architecture
Every principle in this category is listed as a record. Each record carries its kind, its severity, the scopes it applies at and the layer it lives in, then the edge relations that join it to other records, the records that point back at it, the contracts that answer to it and the tensions it takes part in. The descriptors say how it is violated, detected, measured, repaired and enforced. Where the record carries one, an exemplar shows the shape before and after the principle is applied.
Relations diagram
flowchart LR
n_event_driven_architecture["Event-Driven Architecture"]
n_publish_subscribe_pattern["Publish/Subscribe Pattern"]
n_message_queue["Message Queue"]
n_message_broker["Message Broker"]
n_event_bus["Event Bus"]
n_event_stream["Event Stream"]
n_event_sourcing["Event Sourcing"]
n_command_query_responsibility_segregation["Command Query Responsibility Segregation (CQRS)"]
n_domain_events["Domain Events"]
n_integration_events["Integration Events"]
n_asynchronous_communication["Asynchronous Communication"]
n_eventual_consistency["Eventual Consistency"]
n_saga_pattern["Saga Pattern"]
n_outbox_pattern["Outbox Pattern"]
n_compensating_transaction["Compensating Transaction"]
n_append_only_log["Append-Only Log"]
n_dead_letter_queue["Dead-Letter Queue"]
n_idempotent_consumer["Idempotent Consumer"]
n_competing_consumers["Competing Consumers"]
n_event_driven_architecture --> n_asynchronous_communication
n_event_driven_architecture --> n_event_sourcing
n_event_driven_architecture --> n_command_query_responsibility_segregation
n_event_driven_architecture --> n_saga_pattern
n_message_broker --> n_message_queue
n_message_broker --> n_publish_subscribe_pattern
n_event_bus --> n_publish_subscribe_pattern
n_event_bus --> n_event_driven_architecture
n_event_sourcing --> n_append_only_log
n_event_sourcing --> n_domain_events
n_command_query_responsibility_segregation --> n_event_sourcing
n_command_query_responsibility_segregation -.-> n_eventual_consistency
n_domain_events --> n_event_driven_architecture
n_asynchronous_communication --> n_event_driven_architecture
n_saga_pattern --> n_compensating_transaction
n_saga_pattern --> n_eventual_consistency
n_compensating_transaction --> n_saga_pattern
n_append_only_log --> n_event_sourcing
n_dead_letter_queue --> n_message_queue
n_idempotent_consumer --> n_eventual_consistency
n_competing_consumers --> n_message_queueEvent-Driven Architecture
- Kind: style
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: service, integration, system
- Aliases: EDA
- Layer: Execution Core
Publish/Subscribe Pattern
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: integration, eventing
- Aliases: Pub/Sub
- Layer: Execution Core
Message Queue
- Kind: mechanism
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: integration, async processing
- Layer: Execution Core
Message Broker
- Kind: artifact
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: integration, messaging
- Layer: Execution Core
Event Bus
- Kind: mechanism
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: application, integration
- Layer: Execution Core
Event Stream
- Kind: mechanism
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: stream processing, integration
- Layer: Execution Core
Event Sourcing
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: domain, persistence
- Layer: Execution Core
Command Query Responsibility Segregation (CQRS)
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: application, data access
- Aliases: CQRS
- Layer: Execution Core
Domain Events
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: recommended
- Scope: domain, bounded context
- Layer: Execution Core
Integration Events
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: recommended
- Scope: service boundary, messaging
- Layer: Execution Core
Asynchronous Communication
- Kind: principle
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: service, system
- Layer: Execution Core
Eventual Consistency
- Kind: model
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: distributed system, data
- Layer: Execution Core
Saga Pattern
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: service workflow, distributed system
- Aliases: Saga
- Layer: Execution Core
Outbox Pattern
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: recommended
- Scope: persistence, messaging
- Aliases: Transactional Outbox
- Layer: Execution Core
Compensating Transaction
- Kind: mechanism
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: workflow, distributed transaction
- Aliases: Compensating Action
- Layer: Execution Core
Append-Only Log
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: event store, audit, stream
- Layer: Execution Core
Dead-Letter Queue
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Mandatory for: production systems
- Scope: service, messaging, resilience
- Aliases: DLQ
- Layer: Execution Core
Idempotent Consumer
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Mandatory for: distributed systems
- Scope: service, messaging, correctness
- Layer: Execution Core
Competing Consumers
- Kind: pattern
- Category: Event / Messaging / Asynchronous Architecture
- Severity: contextual
- Scope: service, messaging, scalability
- Layer: Execution Core