rabbit是比较流行的MQ中间件之一。
它有部署简单、使用方便、轻量等特性。
在系统资源占用上相对kafka(JAVA)、rockerMQ(JAVA)而言会更加少。
farseer-go/rabbit
配置自动化支持连接池容器化操作
配置
./farseer.yaml
Rabbit:
- Server: "Server=rabbit1:5672,UserName=farseer,Password=farseer,MinChannelCount=10,MaxChannelCount=100"
Exchange:
- "ExchangeName=Ex1,RoutingKey=,ExchangeType=fanout,IsDurable=true,UseConfirmModel=true,AutoCreateExchange=true"
- "ExchangeName=Ex2,RoutingKey=,ExchangeType=fanout,IsDurable=true,UseConfirmModel=true,AutoCreateExchange=true"
- Server: "Server=rabbit2:5672,UserName=farseer,Password=farseer,MinChannelCount=10,MaxChannelCount=100"
Exchange:
- "ExchangeName=Ex3,RoutingKey=,ExchangeType=fanout,IsDurable=true,UseConfirmModel=true,AutoCreateExchange=true"
- "ExchangeName=Ex24,RoutingKey=,ExchangeType=fanout,IsDurable=true,UseConfirmModel=true,AutoCreateExchange=true"
复制代码
配置文件支持同时配置多个不同服务端、不同的交换器设置。
配置说明:
ServerUserNamePasswordMinChannelCountMaxChannelCountExchangeNameRoutingKeyExchangeTypeIsDurableAutoDeleteUseConfirmModelAutoCreateExchange
发消息
product := container.Resolve[rabbit.IProduct]("Ex1")
product.SendString("aaaa")
复制代码
container.Resolverabbit.IProduct
Ex1./farseer.yamlExchangeName
AutoCreateExchange=true
SendStringstring类型
rabbit.IProduct
type IProduct interface {
// SendString 发送消息(使用配置设置)
SendString(message string) error
// SendJson 发送消息,将data序列化成json(使用配置设置)
SendJson(data any) error
// SendStringKey 发送消息(使用配置设置)
SendStringKey(message, routingKey string) error
// SendJsonKey 发送消息(使用配置设置)
SendJsonKey(data any, routingKey string) error
// SendMessage 发送消息
SendMessage(message []byte, routingKey, messageId string, priority uint8) error
}
复制代码
data any
SendMessage
消费
// 注册消费者
consumer := container.Resolve[rabbit.IConsumer]("Ex1")
// 手动ACK
consumer.SubscribeAck("Q1", "", func(message string, ea rabbit.EventArgs) bool {
return true
})
// 自动ACK
consumer.Subscribe("Q2", "", func(message string, ea rabbit.EventArgs) {
// doing...
})
复制代码
container.Resolverabbit.IConsumer
Ex1./farseer.yamlExchangeName
consumer.Subscribe
- 第一个参数:队列名称,如果不存在,则自动创建(示例中的为Q1)
- 第二个参数:routingKey,路由键
- 第三个参数:应用系统的逻辑处理实现。
- message:在队列中推送过来的消息内容。
- ea:本条消息的属性。
SubscribeAck函数
Subscribe函数
总结
farseer-go/rabbitfarseer-go/rabbit