rabbitmq操作
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
2.2 KiB

package rabbitmq
import (
"github.com/streadway/amqp"
)
/**
* 发送消息
* @param exchange 交换机名
* @param extype 消息类型
* @param route 路由key
* @param body 内容
*/
func Send(extype string, exchange string, route string, body []byte, extend ...bool) error {
var durable, auto_delete, no_wait, internal bool = true, false, false, false
if len(extend) > 0 {
durable = extend[0]
}
if len(extend) > 1 {
auto_delete = extend[1]
}
if len(extend) > 2 {
no_wait = extend[2]
}
if len(extend) > 3 {
internal = extend[3]
}
var err error
err = Chan.ExchangeDeclare(
exchange, // name
extype, // type
durable, // durable
auto_delete, // auto-deleted
internal, // internal
no_wait, // no-wait
nil, // arguments
)
if err != nil {
return err
}
err = Chan.Publish(
exchange, // exchange
route, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "text/plain",
Body: body,
})
return err
}
/**
* 发送消息
* @param exchange 交换机名
* @param extype 消息类型
* @param route 路由key
* @param body 内容
* @param delay 延迟多少毫秒
*/
func SendDelay(extype string, exchange string, route string, body []byte, delay int64, extend ...bool) error {
var durable, auto_delete, no_wait, internal bool = true, false, false, false
if len(extend) > 0 {
durable = extend[0]
}
if len(extend) > 1 {
auto_delete = extend[1]
}
if len(extend) > 2 {
no_wait = extend[2]
}
if len(extend) > 3 {
internal = extend[3]
}
var err error
err = Chan.ExchangeDeclare(
exchange, // name
"x-delayed-message", // type
durable, // durable
auto_delete, // auto-deleted
internal, // internal
no_wait, // no-wait
amqp.Table{"x-delayed-type": extype}, // arguments
)
if err != nil {
return err
}
err = Chan.Publish(
exchange, // exchange
route, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
Headers: amqp.Table{"x-delay": delay},
ContentType: "text/plain",
Body: body,
})
return err
}