# README
用于rabbitmq的连接池
fork自https://gitee.com/tym_hmm/rabbitmq-pool-go.git
一边学习一边改
- 已实现功能:
- 使用function option为rabbitmq设置默认值
- 待实现功能:
- 消息发送失败时存入本地文件
- 捕获错误日志
用法
生产者
import (
"github.com/sunerpy/rabbitmqpool"
"sync"
"os"
"fmt"
)
func main(){
var instancePoolProducer *rabbitmqpool.RabbitPool
var testConf = rabbitmqpool.NewAmqpConf("192.1.1.210", 5672, "root", "root", rabbitmqpool.WithRabbitType(1))
var wg sync.WaitGroup
var err error
go rabbitmqpool.TmpMain()
localFile := "localdata.txt"
instancePoolProducer, err = rabbitmqpool.InitPool(testConf)
if err != nil || instancePoolProducer == nil {
fmt.Println("Here get pool failed...start save to file...")
os.Exit(1)
}
for i := 0; i < 5; i++ {
wg.Add(1)
go func(num int) {
defer wg.Done()
data := rabbitmqpool.GetRabbitMqDataFormat("testChange5", rabbitmqpool.EXCHANGE_TYPE_TOPIC, "textQueue5", "", "这里是数据", localFile)
data.Data = fmt.Sprintf("update num is %v", jsonData)
err := instancePoolProducer.Push(data)
if err != nil {
fmt.Printf("err is %v", err)
}
}(i)
}
wg.Wait()
}
# Packages
No description provided by the author
# Functions
获取发送数据模板
@param exChangeName 交换机名称
@param exChangeType 交换机类型
@param queueName string 队列名称
@param route string 路由
@param data string 发送的数据
*/.
获取发送数据模板
过期设置(死信队列)
@param exChangeName 交换机名称
@param exChangeType 交换机类型
@param queueName string 队列名称
@param route string 路由
@param data string 发送的数据
*/.
@param host string: rabbitmq主机ip
@param port int: rabbitmq主机端口
@param user string: 连接用户名
@param password string: 连接密码
@param args string: 可额外设置vhost
*/.
No description provided by the author
No description provided by the author
初始化消费者
*/.
初始化生产者
*/.
No description provided by the author
No description provided by the author
No description provided by the author
随机数
@param int length 生成长度
*/.
No description provided by the author
No description provided by the author
@param i int: 指rabbitmq类型,1为生产者,2为消费者
*/.
No description provided by the author
# Constants
rabbitmq tcp 最大连接数.
最大消费channel数(一般指消费者).
消费者断线重连最大次数.
生产者断线重连最大次数.
最大重发次数.
最大重试时间机数.
最小重试时间机数.
Direct:定向,把消息交给符合指定routing key 的队列.
Fanout:广播,将消息交给所有绑定到交换机的队列.
Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列.
轮循-连接池负载算法.
消费者.
生产者.
信道创建失败.
交换机/队列/绑定失败.
连接失败.
获取信道失败.
消息推送失败.
发送超过最大重试次数.
超过最大重试次数.
# Structs
No description provided by the author
消费者注册接收数据
*/.
rabbitMq 通用队列
*/.
连接负载处理
*/.
发送数据
消息发送
*/.
错误返回
*/.
No description provided by the author
No description provided by the author
# Interfaces
No description provided by the author
No description provided by the author