rabbitmq

package
v0.4.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

README

RabbitMQ 实现

基于 github.com/rabbitmq/amqp091-go 的 RabbitMQ 实现。

特性

  • ✅ 支持事件驱动模式(广播)
  • ✅ 支持任务队列模式(负载均衡)
  • ✅ 自动声明 exchange 和 queue
  • ✅ 消息持久化
  • ✅ 失败自动重试
  • ✅ 优雅退出

快速开始

1. 启动 RabbitMQ
# 使用 Docker
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

访问管理界面:http://localhost:15672 (用户名/密码:guest/guest)

2. 基本使用
import "github.com/FangcunMount/component-base/pkg/messaging/rabbitmq"

bus, _ := rabbitmq.NewEventBus("amqp://guest:guest@localhost:5672/")
defer bus.Close()

// 发布消息
bus.Publisher().Publish(ctx, "user.created", data)

// 订阅消息
bus.Subscriber().Subscribe("user.created", "email-service", handler)

运行示例

go run pkg/messaging/example/rabbitmq/main.go

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewEventBus

func NewEventBus(url string) (messaging.EventBus, error)

NewEventBus 创建 RabbitMQ 事件总线

url 格式:amqp://username:password@host:port/vhost 例如:amqp://guest:guest@localhost:5672/

使用示例:

bus, err := rabbitmq.NewEventBus("amqp://guest:guest@localhost:5672/")
if err != nil {
    log.Fatal(err)
}
defer bus.Close()

// 使用发布者
publisher := bus.Publisher()
publisher.Publish(ctx, "user.created", data)

// 使用订阅者
subscriber := bus.Subscriber()
subscriber.Subscribe("user.created", "email-service", handler)

func NewEventBusFromConfig

func NewEventBusFromConfig(config *messaging.Config) (messaging.EventBus, error)

NewEventBusFromConfig 从配置创建事件总线

func NewPublisher

func NewPublisher(url string) (messaging.Publisher, error)

NewPublisher 创建 RabbitMQ 发布者

url 格式:amqp://username:password@host:port/vhost 例如:amqp://guest:guest@localhost:5672/

func NewSubscriber

func NewSubscriber(url string) (messaging.Subscriber, error)

NewSubscriber 创建 RabbitMQ 订阅者

url 格式:amqp://username:password@host:port/vhost 例如:amqp://guest:guest@localhost:5672/

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL