go-rabbitmq-study/exchange/direct.go

39 lines
952 B
Go
Raw Normal View History

2022-11-20 16:37:13 +08:00
package exchange
import (
"github.com/streadway/amqp"
"log"
"skcks.cn/study/rabbitmq/types"
)
const DefaultDirectExchangeName = "direct_exchange"
func DeclareDirect(channel *amqp.Channel, name string, options ...types.DeclareOptionFunc) error {
defaultOption := &types.DeclareOption{
Name: name,
Kind: "direct",
Durable: true,
AutoDelete: false, //auto-deleted
Internal: false, //internal
NoWait: false, //noWait
Args: nil,
}
option := types.MergeExchangeOptionsWithDefault(defaultOption, options)
// 声明 exchange
if err := channel.ExchangeDeclare(
option.Name, //name
option.Kind, //exchangeType
option.Durable, //durable
option.AutoDelete, //auto-deleted
option.Internal, //internal
option.NoWait, //noWait
option.Args, // , //arguments
); err != nil {
log.Println("Failed to declare a exchange:", err.Error())
return err
}
return nil
}