51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
/**
|
||
* @Company: 云南奇讯科技有限公司
|
||
* @Author: yxf
|
||
* @Description:
|
||
* @Date: 2023/7/3 8:56
|
||
*/
|
||
|
||
package service
|
||
|
||
import (
|
||
"github.com/tiger1103/gfast/v3/internal/app/mqueue/consts"
|
||
"github.com/tiger1103/gfast/v3/internal/app/mqueue/model"
|
||
)
|
||
|
||
type IConsumer interface {
|
||
// CloseMqConsumer 关闭消费者
|
||
CloseMqConsumer()
|
||
}
|
||
|
||
// IProducer 消息队列生产者接口
|
||
type IProducer interface {
|
||
// Publish 发布单条消息并等待结果
|
||
Publish(topic string, body []byte) error
|
||
// PublishAsync 发布单条异步消息,不用等待服务器返回结果
|
||
PublishAsync(topic string, body []byte) error
|
||
// DelayPublish 延时发布消息并等待结果,delay单位延迟等级1-18级对应: 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
|
||
DelayPublish(topic string, body []byte, delay consts.MsgDelayLevel) error
|
||
// Close 关闭生产者
|
||
Close()
|
||
}
|
||
|
||
type IMQueue interface {
|
||
SendMsg(m *model.MQSendMsg) error
|
||
Subscribe(topic, channel string, handler model.MQConsumerHandlerCallback) error
|
||
Close()
|
||
Unsubscribe(topic, channel string) error
|
||
}
|
||
|
||
var localMQueue IMQueue
|
||
|
||
func MQueue() IMQueue {
|
||
if localMQueue == nil {
|
||
panic("implement not found for interface IMQueue, forgot register?")
|
||
}
|
||
return localMQueue
|
||
}
|
||
|
||
func RegisterMQueue(i IMQueue) {
|
||
localMQueue = i
|
||
}
|