MQTT 5.0, 3.1.1, 3.1을 지원하는 오픈소스 MQTT 브로커와 C/C++ 클라이언트 라이브러리 및 CLI 도구입니다.
ThreeDotsLabs/watermill
Kafka, RabbitMQ, NATS, SQL 등에서 통일된 Publisher/Subscriber 인터페이스를 제공해 이벤트 기반 애플리케이션을 구축할 수 있는 Go 라이브러리입니다.
- 스타
- 9,927
- 포크
- 515
- 열린 이슈
- 86
- 마지막 커밋
- 2개월 전
어떤 프로젝트인가요?
Watermill은 메시지 스트림을 다루기 위한 Go 라이브러리입니다. 이벤트 기반 애플리케이션과 이벤트 소싱, CQRS, 사가, 메시지를 통한 RPC 같은 패턴을 대상으로 합니다. 핵심 추상화는 메시지를 받아 새 메시지나 오류를 반환하는 핸들러이며, 미들웨어가 다음 처리 과정을 결정합니다.
이 라이브러리는 공통 Publisher 및 Subscriber 인터페이스를 정의하므로, 같은 애플리케이션 코드를 여러 백엔드에서 실행할 수 있습니다. 지원하는 Pub/Sub에는 Kafka, RabbitMQ (AMQP), NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS, SQL 데이터베이스(MySQL 및 PostgreSQL), 그리고 로컬에서 사용할 수 있는 인메모리 GoChannel이 포함됩니다. Pub/Sub 구현체는 ThreeDotsLabs 조직의 별도 리포지토리에 있습니다.
프로젝트는 v1.0.0이며, Pub/Sub 구현체가 race detector와 병렬 스트레스 모드에서 실행하는 공통 테스트 스위트로 테스트되었다고 설명합니다. 또한 단일 테스트 환경에서 백엔드별 처리량을 비교한 벤치마크 표도 제공합니다.
핵심 기능
- 01다양한 메시지 브로커에서 사용할 수 있는 공통 Publisher 및 Subscriber 인터페이스
- 02핸들러가 새 메시지나 오류를 반환하는 핸들러 기반 모델
- 03재시도와 처리 흐름 같은 동작을 구성할 수 있는 미들웨어
- 04Kafka, RabbitMQ, NATS JetStream, Redis Streams, Google Cloud Pub/Sub, AWS SNS/SQS 및 SQL 데이터베이스 지원
- 05로컬 개발과 테스트를 위한 인메모리 GoChannel
활용 사례
- 컴포넌트 간 메시지를 주고받는 이벤트 기반 서비스 구축
- Go에서 이벤트 소싱 또는 CQRS 읽기 모델 구현
- 사가를 사용해 장기 실행 워크플로 조정
- 애플리케이션 로직을 다시 작성하지 않고 메시지 브로커 전환
빠른 시작
- 1
Watermill 라이브러리 모듈을 설치하세요
go get github.com/ThreeDotsLabs/watermill - 2
공식 사이트의 Quickstart 가이드를 따라 첫 앱을 작성하세요
사용 전 알아둘 점
- Go 라이브러리이므로 Go로 애플리케이션을 개발할 때만 유용합니다.
- Kafka나 RabbitMQ와 같은 각 Pub/Sub 백엔드는 별도의 모듈로 제공되므로 직접 추가해야 합니다.
- 벤치마크 수치는 대략적인 추정치이며 설정에 따라 크게 달라집니다.
토픽
자주 묻는 질문
- watermill은(는) 무엇인가요?
- Kafka, RabbitMQ, NATS, SQL 등에서 통일된 Publisher/Subscriber 인터페이스를 제공해 이벤트 기반 애플리케이션을 구축할 수 있는 Go 라이브러리입니다. Watermill은 메시지 스트림을 다루기 위한 Go 라이브러리입니다. 이벤트 기반 애플리케이션과 이벤트 소싱, CQRS, 사가, 메시지를 통한 RPC 같은 패턴을 대상으로 합니다. 핵심 추상화는 메시지를 받아 새 메시지나 오류를 반환하는 핸들러이며, 미들웨어가 다음 처리 과정을 결정합니다.
- watermill은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- watermill은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- watermill은(는) 아직 유지보수되고 있나요?
- 6개월 이내 업데이트. watermill의 마지막 커밋은 2026년 8월 25일입니다.
- watermill은(는) 어디에 사용할 수 있나요?
- 컴포넌트 간 메시지를 주고받는 이벤트 기반 서비스 구축 Go에서 이벤트 소싱 또는 CQRS 읽기 모델 구현 사가를 사용해 장기 실행 워크플로 조정 애플리케이션 로직을 다시 작성하지 않고 메시지 브로커 전환
- watermill는 어떻게 설치하나요?
- Watermill 라이브러리 모듈을 설치하세요: go get github.com/ThreeDotsLabs/watermill 공식 사이트의 Quickstart 가이드를 따라 첫 앱을 작성하세요
- watermill은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/ThreeDotsLabs/watermill
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
RocketMQ, Kafka, RabbitMQ, Pulsar, Redis Stream, NATS 등의 메시지 브로커를 하나의 인터페이스에서 관리하는 로컬 우선 데스크톱 클라이언트입니다.
ZooKeeper나 JVM 없이 실행되는, C++로 작성된 Kafka API 호환 스트리밍 데이터 플랫폼입니다.
Kubernetes와 OpenShift에서 Kafka Connect와 Kafka Streams를 포함한 Apache Kafka 클러스터를 실행하고 관리하는 Kubernetes operator입니다.
실시간 사용량 계량을 지원하는 오픈소스 사용량·크레딧 기반 및 하이브리드 결제 인프라로, 클라우드 또는 자체 호스팅 방식으로 운영할 수 있습니다.
Python용 분산 작업 큐로, 백그라운드 작업을 실행하고 워커와 메시지 브로커에 작업을 분배합니다.