Skip to main content

messaging-channels

Use when designing how messages travel between applications -- channel types, delivery guarantees, and bridging strategies from Enterprise Integration Patterns (Hohpe & Woolf). USE FOR: choosing channel types, point-to-point vs pub-sub, guaranteed delivery, dead letter handling, channel adapters, message bus topology DO NOT USE FOR: message format/structure (use message-construction), routing logic (use message-routing)

소스 정보

저장소
Tyler-R-Kendrick/agent-skills
최근 소스 활동
2026년 2월 11일 05:14
감지된 SKILL.md 언어
영어
스타
12
포크
4

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
13 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
messaging-channels
description
Use when designing how messages travel between applications -- channel types, delivery guarantees, and bridging strategies from Enterprise Integration Patterns (Hohpe & Woolf). USE FOR: choosing channel types, point-to-point vs pub-sub, guaranteed delivery, dead letter handling, channel adapters, message bus topology DO NOT USE FOR: message format/structure (use message-construction), routing logic (use message-routing)
license
MIT
metadata
{"displayName":"Messaging Channels","author":"Tyler-R-Kendrick"}
compatibility
claude, copilot, cursor
references
[{"title":"Enterprise Integration Patterns — Messaging Channels","url":"https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessagingChannelsIntro.html"},{"title":"Enterprise Integration Patterns — Hohpe & Woolf","url":"https://www.enterpriseintegrationpatterns.com/"}]
# Messaging Channels ## Overview Messaging Channels are the pipes in a pipes-and-filters architecture. They define how messages travel from sender to receiver, what delivery guarantees are provided, and how disparate systems connect to the messaging infrastructure. Hohpe & Woolf identify several channel patterns, each addressing a different integration concern. ## Patterns ### Point-to-Point Channel Ensures a message is consumed by exactly one receiver. Used for command-style messages where only one consumer should act. ``` ┌──────────┐ ┌─────────────────┐ ┌──────────┐ │ Sender │────────>│ P2P Channel │────────>│ Receiver │ └──────────┘ │ (one consumer) │ └──────────┘ └─────────────────┘ ``` **When to use:** Task distribution, command dispatch, work queues where each message must be processed once. ### Publish-Subscribe Channel Delivers a copy of each message to every subscriber. Used for event notification where multiple systems need to react. ``` ┌──────────────┐ ┌───>│ Subscriber A │ ┌──────────┐ ┌──────────────┐ │ └──────────────┘ │ Publisher │────>│ Pub-Sub │────┤ └──────────┘ │ Channel │ │ ┌──────────────┐ └──────────────┘ └───>│ Subscriber B │ └──────────────┘ ``` **When to use:** Event broadcasting, notification fan-out, audit logging, keeping multiple systems in sync. ### Datatype Channel Dedicates a channel to a single message type so consumers know exactly what to expect without inspecting message content. ``` ┌──────────┐ ┌─────────────────────┐ ┌──────────┐ │ Sender │────>│ "OrderCreated" │────>│ Consumer │ └──────────┘ │ Channel │ └──────────┘ └─────────────────────┘ ┌──────────┐ ┌─────────────────────┐ ┌──────────┐ │ Sender │────>│ "PaymentReceived" │────>│ Consumer │ └──────────┘ │ Channel │ └──────────┘ └─────────────────────┘ ``` **When to use:** When consumers are type-specific, to avoid content-based filtering on the consumer side, and to simplify deserialization. ### Invalid Message Channel A dedicated channel where the messaging system routes messages that cannot be processed -- malformed, unrecognised, or schema-violating. ``` ┌──────────┐ ┌─────────────┐──── OK ────>┌──────────┐ │ Sender │────>│ Validator │ │ Consumer │ └──────────┘ └─────────────┘ └──────────┘ │ INVALID │ v ┌─────────────────┐ │ Invalid Message │ │ Channel │ └─────────────────┘ ``` **When to use:** Capturing malformed input for analysis without blocking the main processing pipeline. ### Dead Letter Channel Receives messages that the messaging system could not deliver after all retry attempts are exhausted. A safety net for every queue. ``` ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Sender │────>│ Channel │────>│ Consumer │ └──────────┘ └──────────┘ └──────────┘ │ │ undeliverable processing after retries failure │ │ v v ┌────────────────────────┐ │ Dead Letter Channel │ └────────────────────────┘ ``` **When to use:** Every production queue should have a dead letter channel. Essential for diagnosing delivery failures and preventing message loss. ### Guaranteed Delivery Persists messages to durable storage before acknowledging the send, ensuring no message is lost even if the broker crashes. ``` ┌──────────┐ ┌──────────────────────────┐ ┌──────────┐ │ Sender │────>│ Channel │────>│ Receiver │ └──────────┘ │ ┌──────────────────┐ │ └──────────┘ │ │ Persistent Store │ │ │ │ (disk / DB) │ │ │ └──────────────────┘ │ └──────────────────────────┘ ``` **When to use:** Financial transactions, order processing, any message that must not be lost. Trade-off: higher latency for durability. ### Channel Adapter Connects a non-messaging application to the messaging system, translating between the application's native API and the channel interface. ``` ┌──────────────┐ ┌─────────────┐ ┌─────────────┐ │ Legacy App │────>│ Channel │────>│ Message │ │ (HTTP, DB, │ │ Adapter │ │ Channel │ │ file, etc.) │ └─────────────┘ └─────────────┘ └──────────────┘ ``` **When to use:** Integrating legacy systems, databases, file systems, or REST APIs into a messaging topology without modifying the original application. ### Messaging Bridge Connects two separate messaging systems, translating protocols and message formats between them. ``` ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ Messaging │────>│ Messaging │────>│ Messaging │ │ System A │ │ Bridge │ │ System B │ │ (RabbitMQ) │ └───────────────┘ │ (Kafka) │ └───────────────┘ └───────────────┘ ``` **When to use:** Migrating between brokers, connecting cloud and on-premise messaging, bridging organizational boundaries. ### Message Bus A shared messaging infrastructure that all applications connect to, providing a common communication backbone with standardised message formats. ``` ┌───────┐ ┌───────┐ ┌───────┐ ┌───────┐ │ App A │ │ App B │ │ App C │ │ App D │ └───┬───┘ └───┬───┘ └───┬───┘ └───┬───┘ │ │ │ │ ════╪══════════╪══════════╪══════════╪════ Message Bus ══════════════════════════════════════════ ``` **When to use:** Enterprise-wide integration where applications share a common canonical data model and communication infrastructure. ## Choosing the Right Channel | Requirement | Pattern | |-------------|---------| | One consumer per message | Point-to-Point Channel | | Multiple consumers per message | Publish-Subscribe Channel | | Type-safe consumers | Datatype Channel | | Handle malformed messages | Invalid Message Channel | | Handle undeliverable messages | Dead Letter Channel | | No message loss | Guaranteed Delivery | | Connect non-messaging apps | Channel Adapter | | Bridge two brokers | Messaging Bridge | | Shared enterprise backbone | Message Bus | ## Best Practices - Always configure a Dead Letter Channel for every production queue. - Use Datatype Channels to keep consumers simple and avoid content inspection. - Enable Guaranteed Delivery for any message whose loss has business impact. - Prefer Publish-Subscribe for events and Point-to-Point for commands. - Use Channel Adapters to isolate legacy integration code from business logic. - Monitor channel depth and throughput; a growing queue signals a consumer that cannot keep up. - Name channels after the message type or business purpose, not the producer or consumer.
GitHub에서 보기