JCC-CSScheduler/common/pkgs/mq/executor/client.go

48 lines
795 B
Go

package executor
import (
"gitlink.org.cn/cloudream/common/pkgs/mq"
schmq "gitlink.org.cn/cloudream/scheduler/common/pkgs/mq"
)
type Client struct {
rabbitCli *mq.RabbitMQTransport
}
func NewClient(cfg *schmq.Config) (*Client, error) {
rabbitCli, err := mq.NewRabbitMQTransport(cfg.MakeConnectingURL(), ServerQueueName, "")
if err != nil {
return nil, err
}
return &Client{
rabbitCli: rabbitCli,
}, nil
}
func (c *Client) Close() {
c.rabbitCli.Close()
}
type Pool interface {
Acquire() (*Client, error)
Release(cli *Client)
}
type pool struct {
mqcfg *schmq.Config
}
func NewPool(mqcfg *schmq.Config) Pool {
return &pool{
mqcfg: mqcfg,
}
}
func (p *pool) Acquire() (*Client, error) {
return NewClient(p.mqcfg)
}
func (p *pool) Release(cli *Client) {
cli.Close()
}