1 Star 0 Fork 0

qw_1215/glink

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
nsq.go 1.17 KB
一键复制 编辑 原始数据 按行查看 历史
qw_1215 提交于 2020-03-24 14:40 +08:00 . 添加pg支持,修改nsq的bug
package source
import (
streams "gitee.com/qw_1215/glink"
"gitee.com/qw_1215/glink/flow"
"github.com/nsqio/go-nsq"
"time"
)
type NsqSource struct {
consumer *nsq.Consumer
url string
out chan interface{}
}
func NewNsqSource(url string, topic string, channel string) (*NsqSource, error) {
cfg := nsq.NewConfig()
cfg.LookupdPollInterval = time.Second //设置重连时间
c, err := nsq.NewConsumer(topic, channel, cfg) // 新建一个消费者
sq := &NsqSource{
consumer: c,
url: url,
out: make(chan interface{}),
}
streams.Check(err)
go sq.init()
return sq, nil
}
func (rs *NsqSource) init() error {
rs.consumer.SetLogger(nil, 0) //屏蔽系统日志
rs.consumer.AddHandler(rs)
// 建立一个nsqd连接
if err := rs.consumer.ConnectToNSQD(rs.url); err != nil {
return err
}
return nil
}
//处理消息
func (rs *NsqSource) HandleMessage(msg *nsq.Message) error {
rs.out <- msg
return nil
}
// Via streams data through given flow
func (rs *NsqSource) Via(_flow streams.Flow) streams.Flow {
flow.DoStream(rs, _flow)
return _flow
}
// Out returns channel for sending data
func (rs *NsqSource) Out() <-chan interface{} {
return rs.out
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/qw_1215/glink.git
git@gitee.com:qw_1215/glink.git
qw_1215
glink
glink
195e12e86392

搜索帮助