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.
66 lines
1.3 KiB
66 lines
1.3 KiB
package mq
|
|
|
|
import (
|
|
"github.com/streadway/amqp"
|
|
"matchmaking-system/internal/conf"
|
|
"matchmaking-system/internal/data/mq/consumer"
|
|
"matchmaking-system/internal/data/mq/producers"
|
|
"matchmaking-system/internal/pkg/logging/applogger"
|
|
)
|
|
|
|
// NewMqProducer
|
|
//
|
|
// @Description: TODO: 实例化Mq生产者
|
|
// @param c
|
|
// @return *producers.Producer
|
|
func NewMqProducer(c *conf.Data) *producers.Producer {
|
|
conn, err := initMq(c.Mq.Address)
|
|
if err != nil {
|
|
applogger.Error("NewMq err:%v", err)
|
|
return nil
|
|
}
|
|
|
|
// 生产者实例
|
|
p, err := producers.NewProducer(c, conn)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
return p
|
|
}
|
|
|
|
// NewMqConsumer TODO: 实例化Mq消费者
|
|
//
|
|
// @Description:
|
|
// @param c
|
|
// @return *consumer.Consumer
|
|
func NewMqConsumer(c *conf.Data) *consumer.Consumer {
|
|
conn, err := initMq(c.Mq.Address)
|
|
if err != nil {
|
|
applogger.Error("NewMq err:%v", err)
|
|
return nil
|
|
}
|
|
// 消费者实例
|
|
cn, err := consumer.NewConsumer(c, conn)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
return cn
|
|
}
|
|
|
|
// initMq 实例化Mq(生产者|消费者)消息队列
|
|
//
|
|
// @Description:
|
|
// @param c
|
|
// @return *amqp.Connection
|
|
// @return error
|
|
func initMq(address string) (*amqp.Connection, error) {
|
|
conn, err := amqp.Dial(address)
|
|
if err != nil {
|
|
applogger.Error("NewMq err:%v", err)
|
|
return nil, err
|
|
}
|
|
|
|
return conn, nil
|
|
}
|
|
|