Initial commit
This commit is contained in:
385
references/event-mesh.md
Normal file
385
references/event-mesh.md
Normal file
@@ -0,0 +1,385 @@
|
||||
# Event Mesh - Comprehensive Reference
|
||||
|
||||
**Source**: SAP BTP Integration Suite Documentation
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/tree/main/docs/ISuite](https://github.com/SAP-docs/sap-btp-integration-suite/tree/main/docs/ISuite)
|
||||
**Last Updated**: 2025-11-22
|
||||
|
||||
---
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Overview](#overview)
|
||||
2. [Core Concepts](#core-concepts)
|
||||
3. [Topics](#topics)
|
||||
4. [Queues](#queues)
|
||||
5. [Event Brokers](#event-brokers)
|
||||
6. [Message Clients](#message-clients)
|
||||
7. [Webhook Subscriptions](#webhook-subscriptions)
|
||||
8. [Best Practices](#best-practices)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Event Mesh is a capability within SAP Integration Suite that enables event-driven architecture (EDA) for publishing and consuming business events across your enterprise ecosystem.
|
||||
|
||||
**Key Benefits**:
|
||||
- Decouple producers from consumers
|
||||
- Enable real-time event processing
|
||||
- Scale independently
|
||||
- Support async communication patterns
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/event-mesh-3129673.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/event-mesh-3129673.md)
|
||||
|
||||
---
|
||||
|
||||
## Core Concepts
|
||||
|
||||
### What is an Event?
|
||||
|
||||
An event represents "a change in the state of data" - something that happens in a system that other systems may need to know about.
|
||||
|
||||
**Examples**:
|
||||
- Order created in e-commerce system
|
||||
- Temperature sensor reading changed
|
||||
- Customer record updated in CRM
|
||||
- Payment processed
|
||||
|
||||
### Event-Driven Architecture (EDA)
|
||||
|
||||
EDA helps enterprises "act on new data in near-real time" by:
|
||||
- Publishing events when state changes occur
|
||||
- Subscribing to events of interest
|
||||
- Processing events asynchronously
|
||||
- Decoupling system dependencies
|
||||
|
||||
### Event Messages
|
||||
|
||||
Events generate messages to communicate event data between systems. Messages contain:
|
||||
- Event type/topic
|
||||
- Payload (event data)
|
||||
- Metadata (timestamp, source, etc.)
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-events-9a5bf90.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-events-9a5bf90.md)
|
||||
|
||||
---
|
||||
|
||||
## Topics
|
||||
|
||||
Topics classify event messages using a hierarchical structure.
|
||||
|
||||
### Topic Structure
|
||||
|
||||
Format: `level1/level2/level3/.../levelN`
|
||||
|
||||
**Example**:
|
||||
```
|
||||
sales/orders/created
|
||||
sales/orders/updated
|
||||
sales/orders/cancelled
|
||||
inventory/stock/updated
|
||||
inventory/stock/depleted
|
||||
```
|
||||
|
||||
### Topic Naming Rules
|
||||
|
||||
| Rule | Requirement |
|
||||
|------|-------------|
|
||||
| Length | Maximum 150 characters |
|
||||
| Characters | Alphanumeric, underscore, period, hyphen |
|
||||
| Segments | Minimum 2, maximum 20 |
|
||||
| Separator | Forward slash (/) only |
|
||||
| Start/End | Cannot start or end with / |
|
||||
| Empty segments | Not allowed |
|
||||
|
||||
### Topic Wildcards
|
||||
|
||||
**Asterisk (*)**: Matches entire subtree, must be at end
|
||||
```
|
||||
sales/* → matches sales/orders, sales/returns, etc.
|
||||
sales/orders/* → matches sales/orders/created, sales/orders/updated
|
||||
```
|
||||
|
||||
**Plus (+)**: Matches single segment
|
||||
```
|
||||
sales/+/created → matches sales/orders/created, sales/returns/created
|
||||
+/orders/+ → matches sales/orders/created, purchases/orders/updated
|
||||
```
|
||||
|
||||
### Topic Subscriptions
|
||||
|
||||
Queues subscribe to topics to receive matching events:
|
||||
|
||||
```
|
||||
Subscription: sales/*/created
|
||||
Matches:
|
||||
✓ sales/orders/created
|
||||
✓ sales/returns/created
|
||||
✓ sales/quotes/created
|
||||
✗ sales/orders/updated
|
||||
```
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-topics-and-topic-subscriptions-1712c0d.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-topics-and-topic-subscriptions-1712c0d.md)
|
||||
|
||||
---
|
||||
|
||||
## Queues
|
||||
|
||||
Queues are endpoints that persist messages for consumers.
|
||||
|
||||
### Queue Definition
|
||||
|
||||
"A queue is an endpoint configured with topic subscriptions that can publish messages to and consume messages from."
|
||||
|
||||
### Queue Types
|
||||
|
||||
| Type | Description | Use Case |
|
||||
|------|-------------|----------|
|
||||
| **EXCLUSIVE** | Only one consumer can access at a time | Serial processing, single consumer |
|
||||
| **NON-EXCLUSIVE** | Multiple consumers can access | Parallel processing, load balancing |
|
||||
|
||||
### Queue Workflow
|
||||
|
||||
```
|
||||
1. Producer → publishes message → Event Mesh
|
||||
2. Event Mesh → matches topic → stores in queue
|
||||
3. Queue → retains message → until consumed
|
||||
4. Consumer → connects → receives message
|
||||
5. Consumer → acknowledges → message removed
|
||||
```
|
||||
|
||||
### Queue Features
|
||||
|
||||
- Subscribe to multiple topics
|
||||
- Persist messages until consumed
|
||||
- Support guaranteed delivery
|
||||
- Enable message acknowledgment
|
||||
- Allow dead-letter handling
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/queues-99b7501.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/queues-99b7501.md)
|
||||
|
||||
---
|
||||
|
||||
## Event Brokers
|
||||
|
||||
### Definition
|
||||
|
||||
An event broker is "middleware that mediates the communication of event messages between producers and consumers using the various message exchange patterns."
|
||||
|
||||
### Broker Functions
|
||||
|
||||
1. **Receive** events from producers
|
||||
2. **Route** based on topics/subscriptions
|
||||
3. **Store** for persistence
|
||||
4. **Deliver** to subscribers
|
||||
5. **Acknowledge** successful delivery
|
||||
|
||||
### Deployment Options
|
||||
|
||||
| Type | Description |
|
||||
|------|-------------|
|
||||
| Hardware appliance | Physical messaging hardware |
|
||||
| Software | On-premise software installation |
|
||||
| Cloud SaaS | SAP Event Mesh service |
|
||||
|
||||
### Message Exchange Patterns
|
||||
|
||||
| Pattern | Description |
|
||||
|---------|-------------|
|
||||
| Publish/Subscribe | One-to-many distribution |
|
||||
| Point-to-Point | One-to-one delivery |
|
||||
| Request/Reply | Synchronous with response |
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-event-brokers-f72428f.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-event-brokers-f72428f.md)
|
||||
|
||||
---
|
||||
|
||||
## Message Clients
|
||||
|
||||
Message clients connect applications to Event Mesh.
|
||||
|
||||
### Creating a Message Client
|
||||
|
||||
**Via BTP Cockpit**:
|
||||
1. Navigate to Event Mesh service
|
||||
2. Create message client instance
|
||||
3. Configure queue subscriptions
|
||||
4. Generate credentials
|
||||
|
||||
**Via CF CLI**:
|
||||
```bash
|
||||
cf create-service enterprise-messaging default my-event-mesh \
|
||||
-c '{"emname": "my-client", "options": {"management": true, "messaging": true}}'
|
||||
```
|
||||
|
||||
### Client Configuration
|
||||
|
||||
```json
|
||||
{
|
||||
"emname": "my-message-client",
|
||||
"namespace": "company/department/app",
|
||||
"rules": {
|
||||
"topicRules": {
|
||||
"publishFilter": ["${namespace}/*"],
|
||||
"subscribeFilter": ["${namespace}/*", "shared/*"]
|
||||
},
|
||||
"queueRules": {
|
||||
"publishFilter": ["${namespace}/*"],
|
||||
"subscribeFilter": ["${namespace}/*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/configure-a-message-client-867c517.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/configure-a-message-client-867c517.md)
|
||||
|
||||
---
|
||||
|
||||
## Webhook Subscriptions
|
||||
|
||||
Enable HTTP-based event delivery without persistent connections.
|
||||
|
||||
### How Webhooks Work
|
||||
|
||||
```
|
||||
1. Event published → Event Mesh
|
||||
2. Event Mesh → matches subscription
|
||||
3. Event Mesh → HTTP POST → Webhook URL
|
||||
4. Webhook endpoint → processes event
|
||||
5. Endpoint → returns 2xx → acknowledged
|
||||
```
|
||||
|
||||
### Webhook Configuration
|
||||
|
||||
| Parameter | Description |
|
||||
|-----------|-------------|
|
||||
| URL | Target endpoint for events |
|
||||
| Topic subscription | Topics to receive |
|
||||
| Authentication | Basic, OAuth, Certificate |
|
||||
| Retry policy | Retry on failure |
|
||||
|
||||
### Webhook vs Queue Consumption
|
||||
|
||||
| Aspect | Webhook | Queue |
|
||||
|--------|---------|-------|
|
||||
| Connection | HTTP push | Protocol connection |
|
||||
| Persistence | Limited | Full |
|
||||
| Ordering | Not guaranteed | Guaranteed |
|
||||
| Throughput | Lower | Higher |
|
||||
| Simplicity | Higher | Lower |
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/webhook-subscriptions-58e3729.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/webhook-subscriptions-58e3729.md)
|
||||
|
||||
---
|
||||
|
||||
## Integration with Cloud Integration
|
||||
|
||||
### AMQP Adapter
|
||||
|
||||
Connect iFlows to Event Mesh using AMQP adapter.
|
||||
|
||||
**Sender Adapter** (consume events):
|
||||
```
|
||||
Adapter Type: AMQP
|
||||
Transport Protocol: WebSocket
|
||||
Host: messaging-service-host
|
||||
Queue Name: queue:my-queue
|
||||
Authentication: OAuth2 Client Credentials
|
||||
```
|
||||
|
||||
**Receiver Adapter** (publish events):
|
||||
```
|
||||
Adapter Type: AMQP
|
||||
Transport Protocol: WebSocket
|
||||
Host: messaging-service-host
|
||||
Topic: topic/my/event
|
||||
Authentication: OAuth2 Client Credentials
|
||||
```
|
||||
|
||||
### Event-Driven iFlow Pattern
|
||||
|
||||
```
|
||||
┌──────────────┐ ┌────────────────┐ ┌──────────────┐
|
||||
│ Event Mesh │ → │ iFlow (AMQP) │ → │ Backend │
|
||||
│ Queue │ │ Processing │ │ System │
|
||||
└──────────────┘ └────────────────┘ └──────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Topic Design
|
||||
|
||||
1. **Use hierarchical structure**
|
||||
```
|
||||
organization/domain/entity/action
|
||||
acme/sales/order/created
|
||||
```
|
||||
|
||||
2. **Be specific but not too granular**
|
||||
- Good: `sales/orders/created`
|
||||
- Too broad: `sales/event`
|
||||
- Too specific: `sales/orders/created/usa/region1/store5`
|
||||
|
||||
3. **Use consistent naming conventions**
|
||||
- lowercase
|
||||
- no spaces
|
||||
- descriptive names
|
||||
|
||||
### Queue Design
|
||||
|
||||
1. **One queue per consumer type**
|
||||
- Order processing queue
|
||||
- Analytics queue
|
||||
- Audit queue
|
||||
|
||||
2. **Use dead-letter queues**
|
||||
- Handle failed messages
|
||||
- Enable retry analysis
|
||||
|
||||
3. **Set appropriate TTL**
|
||||
- Time-to-live for messages
|
||||
- Prevent queue overflow
|
||||
|
||||
### Error Handling
|
||||
|
||||
1. **Acknowledge after processing**
|
||||
- Don't acknowledge before work is done
|
||||
- Use transactions when needed
|
||||
|
||||
2. **Implement retry logic**
|
||||
- Exponential backoff
|
||||
- Maximum retry count
|
||||
|
||||
3. **Use dead-letter handling**
|
||||
- Route failed messages
|
||||
- Enable investigation
|
||||
|
||||
---
|
||||
|
||||
## Glossary
|
||||
|
||||
| Term | Definition |
|
||||
|------|------------|
|
||||
| **Event** | Change in system state |
|
||||
| **Topic** | Hierarchical event classification |
|
||||
| **Queue** | Persistent message endpoint |
|
||||
| **Subscription** | Topic pattern for queue |
|
||||
| **Producer** | Application publishing events |
|
||||
| **Consumer** | Application receiving events |
|
||||
| **Broker** | Middleware routing events |
|
||||
| **Webhook** | HTTP-based event delivery |
|
||||
|
||||
**Documentation**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/glossary-for-event-mesh-501ba2d.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/glossary-for-event-mesh-501ba2d.md)
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- **Event Mesh Overview**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/event-mesh-3129673.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/event-mesh-3129673.md)
|
||||
- **Events**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-events-9a5bf90.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-events-9a5bf90.md)
|
||||
- **Event Brokers**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-event-brokers-f72428f.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-event-brokers-f72428f.md)
|
||||
- **Topics**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-topics-and-topic-subscriptions-1712c0d.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/what-are-topics-and-topic-subscriptions-1712c0d.md)
|
||||
- **Queues**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/queues-99b7501.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/queues-99b7501.md)
|
||||
- **Topic Syntax**: [https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/topic-naming-syntax-62460b8.md](https://github.com/SAP-docs/sap-btp-integration-suite/blob/main/docs/ISuite/topic-naming-syntax-62460b8.md)
|
||||
Reference in New Issue
Block a user