1 Star 0 Fork 0

csingo/cAmqp

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Producer.go 1.52 KB
一键复制 编辑 原始数据 按行查看 历史
joe 提交于 2024-02-20 13:18 +08:00 . update
package cAmqp
import (
"github.com/gin-gonic/gin"
"github.com/rabbitmq/amqp091-go"
"gitee.com/csingo/cLog"
)
func Produce(ctx *gin.Context, option ProduceOption) (err error) {
var channel *amqp091.Channel
var driver *AmqpConf_Driver
var name string
self.plock.Lock()
defer self.plock.Unlock()
name, channel, driver, err = self.channel(ctx, option.DriverName, option.DriverConf, ConnectionType_Producer)
if err != nil {
cLog.WithContext(ctx, map[string]any{
"source": "cAmqp.Produce",
"option": option,
"err": err.Error(),
}).Error("cAmqp.Produce:获取channel异常")
return
}
defer func() {
self.close(ctx, driver.Connection, name)
}()
err = channel.ExchangeDeclare(
driver.ExchangeName,
string(driver.ExchangeType),
option.Exchange.Durable,
// option.Exchange.AutoDeleted,
false,
option.Exchange.Internal,
option.Exchange.NoWait,
option.Exchange.Arguments,
)
if err != nil {
return
}
if !option.OnlyPush {
_, err = channel.QueueDeclare(
driver.QueueName,
option.Queue.Durable,
// option.Queue.AutoDeleted,
false,
option.Queue.Exclusive,
option.Queue.NoWait,
option.Queue.Arguments,
)
if err != nil {
return
}
err = channel.QueueBind(driver.QueueName, driver.RoutingKey, driver.ExchangeName, option.Bind.NoWait, option.Bind.Arguments)
if err != nil {
return
}
}
err = channel.PublishWithContext(
ctx,
driver.ExchangeName,
driver.RoutingKey,
option.Mandatory,
option.Immediate,
option.Message,
)
if err != nil {
return
}
return
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/csingo/cAmqp.git
git@gitee.com:csingo/cAmqp.git
csingo
cAmqp
cAmqp
v0.4.2

搜索帮助