Skip to main content

integration-patterns

Use when designing or evaluating enterprise integration architectures based on Hohpe & Woolf's Enterprise Integration Patterns. USE FOR: Enterprise Integration Patterns, messaging architecture, choosing integration patterns, pipes and filters, message-oriented middleware DO NOT USE FOR: specific pattern implementations in code (use sub-skills), API design (use dev/backend/api-design), event sourcing (use dev/architecture/event-driven)

소스 정보

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

설치 방법

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

소스 파일 검토

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

파일 탐색기
96 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
integration-patterns
description
Use when designing or evaluating enterprise integration architectures based on Hohpe & Woolf's Enterprise Integration Patterns. USE FOR: Enterprise Integration Patterns, messaging architecture, choosing integration patterns, pipes and filters, message-oriented middleware DO NOT USE FOR: specific pattern implementations in code (use sub-skills), API design (use dev/backend/api-design), event sourcing (use dev/architecture/event-driven)
license
MIT
metadata
{"displayName":"Integration Patterns","author":"Tyler-R-Kendrick"}
compatibility
claude, copilot, cursor
references
[{"title":"Enterprise Integration Patterns — Hohpe & Woolf","url":"https://www.enterpriseintegrationpatterns.com/"},{"title":"Enterprise Integration Patterns — Wikipedia","url":"https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns"}]
# Enterprise Integration Patterns ## Overview Enterprise Integration Patterns (EIP), catalogued by Gregor Hohpe and Bobby Woolf, define a vocabulary of 65 patterns for designing robust, asynchronous messaging systems. The patterns describe how to connect applications, transform data in flight, route messages intelligently, and manage messaging infrastructure -- all while keeping systems loosely coupled and independently deployable. The book organises patterns around the pipes-and-filters architectural style: messages flow through a series of processing steps (filters) connected by channels (pipes). ## Pattern Categories ``` ┌─────────────────────────────────────────────────────────────────┐ │ Enterprise Integration Patterns │ ├───────────────┬───────────────┬───────────────┬─────────────────┤ │ Messaging │ Message │ Message │ Message │ │ Channels │ Construction │ Routing │ Transformation │ │ │ │ │ │ │ How messages │ How messages │ How messages │ How messages │ │ travel │ are built │ are directed │ are reshaped │ ├───────────────┴───────────────┴───────────────┴─────────────────┤ │ Messaging Endpoints │ System Management │ │ │ │ │ How applications connect │ How to monitor, test, and │ │ to the messaging system │ control the messaging system │ └───────────────────────────────┴─────────────────────────────────┘ ``` ## Pipes-and-Filters Architecture ``` ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Source │───>│ Filter A │───>│ Filter B │───>│ Sink │ │ (Producer)│ │(Transform│ │ (Route) │ │(Consumer)│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ pipe pipe pipe (channel) (channel) (channel) ``` Each **filter** performs a single processing step (validate, enrich, transform, route). Each **pipe** is a message channel connecting one filter to the next. This architecture provides: - **Composability** -- combine simple filters into complex workflows. - **Replaceability** -- swap a filter without touching others. - **Scalability** -- scale individual filters independently. - **Testability** -- test each filter in isolation. ## When to Use Messaging vs. Direct Calls | Concern | Direct / Synchronous Calls | Messaging / Asynchronous | |---------|---------------------------|--------------------------| | Coupling | Caller must know callee's address and API | Sender only knows the channel | | Availability | Callee must be running | Callee can be offline; messages queue | | Latency | Immediate response required | Eventual response acceptable | | Throughput | Limited by slowest participant | Buffer with queues; scale consumers | | Error handling | Caller handles errors in real time | Dead-letter channels, retries, compensation | | Complexity | Simple for 1:1 interactions | Worth it when >2 participants or reliability matters | **Rule of thumb:** Start synchronous. Move to messaging when you need temporal decoupling, load levelling, reliable delivery, or fan-out to multiple consumers. ## Pattern Selection Guide | Problem | Pattern Category | Key Patterns | |---------|-----------------|--------------| | How do I send a message from A to B? | Messaging Channels | Point-to-Point Channel, Channel Adapter | | How do I notify many subscribers? | Messaging Channels | Publish-Subscribe Channel | | What goes inside a message? | Message Construction | Command Message, Event Message, Document Message | | How do I correlate request and reply? | Message Construction | Correlation Identifier, Return Address | | How do I route to the right consumer? | Message Routing | Content-Based Router, Recipient List | | How do I split and reassemble? | Message Routing | Splitter, Aggregator | | How do I orchestrate a multi-step flow? | Message Routing | Process Manager, Routing Slip | | How do I reshape data between systems? | Message Transformation | Content Enricher, Normalizer, Canonical Data Model | | How do I reduce message size? | Message Transformation | Claim Check, Content Filter | | How do I consume messages reliably? | Messaging Endpoints | Competing Consumers, Idempotent Receiver | | How do I monitor and debug? | System Management | Wire Tap, Message Store, Control Bus | ## Reference Implementations | Technology | Language / Platform | Strengths | |-----------|-------------------|-----------| | **Apache Camel** | Java / JVM | Broadest connector ecosystem; DSL routes map 1:1 to EIP | | **Spring Integration** | Java / Spring | Deep Spring ecosystem integration; annotation-driven | | **MassTransit** | C# / .NET | First-class saga support; RabbitMQ & Azure Service Bus transports | | **NServiceBus** | C# / .NET | Commercial-grade; strong tooling and monitoring | | **MediatR** | C# / .NET | In-process mediator; great for CQRS without infrastructure | | **Azure Service Bus** | Cloud (Azure) | Managed broker; topics, subscriptions, sessions | | **RabbitMQ** | Any (AMQP) | Lightweight broker; exchanges map to routing patterns | | **Apache Kafka** | Any | Log-based streaming; high throughput; replay capability | ## Best Practices - Learn the pattern language before choosing a framework -- the vocabulary transcends any single implementation. - Prefer idempotent message handlers; at-least-once delivery is the norm. - Design messages as immutable, self-describing contracts with schema versioning. - Keep channels focused on a single data type or purpose (Datatype Channel). - Use Dead Letter Channels for every queue -- never silently drop messages. - Instrument messaging with Wire Taps and Message Stores from day one; debugging async flows without observability is painful. - Start with the simplest topology (point-to-point) and evolve toward pub-sub or content-based routing only when the need is proven.
GitHub에서 보기