代码拉取完成,页面将自动刷新
package xnsq
import (
"time"
"gitee.com/xiaoyutab/xgotool/individual/xlog"
"github.com/nsqio/go-nsq"
)
// NSQ队列监听
// 导出函数,需要在入口处进行执行 `go xnsq.Listen()` 来进行同步监听
func Listen() {
// 若未开启NSQ队列
if _default.Get == "" || _default.GetTopic == "" {
return
}
configs := nsq.NewConfig()
configs.MaxInFlight = _default.GetMaxInFlight
consumer, err := nsq.NewConsumer(_default.GetTopic, _default.GetChannel, configs)
if err != nil {
xlog.Warning("NSQ队列配置失败", err)
return
}
defer consumer.Stop()
// 设置此使用者接收的消息的处理程序。可以调用多次。更多参数见 AddConcurrentHandlers.
consumer.AddHandler(&myMessageHandler{})
// 使用nsqlookupd可以发现nsqd实例。更多参数见ConnectToNSQD、ConnectToNSQ、ConnectToNSFLookupds。
err = consumer.ConnectToNSQLookupd(_default.Get)
if err != nil {
xlog.Warning("NSQ队列监听失败", err)
return
}
// 休眠,阻塞程序运行
for {
// 如果设置了停止就直接退出该程序,不再进行监听
if _stop {
_stop_ing = false
return
}
time.Sleep(time.Second)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。