关于通过go-stomp订阅activemq无法持久化订阅的问题

go_to · · 2226 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

最近用golang重写一个java的消息中间件,使用go-stomp远程订阅activemq的topic,能够接收到数据。但是虽然配置了clientID,每次重启程序还是没有接收到离线时候的数据,在java老项目里用setClientId能实现数据持久化订阅。 源码如下: conn, err := stomp.Dial("tcp", "1.1.1.1:8000", stomp.ConnOpt.Login("name", "passwd"), stomp.ConnOpt.HeartBeatError(5*time.Minute)) if err != nil { fmt.Println("err =", err) } //消费者订阅这个队列 //参数一:订阅名 //参数二:确认信息,直接填默认地即可 defer conn.Disconnect() sub, err := conn.Subscribe("/topic/topic.name", stomp.AckMode(stomp.AckAuto), stomp.SubscribeOpt.Id("user-0728")) for { //无限循环 fmt.Println(sub.Active()) fmt.Println(sub.Id()) select { //sub.C是一个channel,如果订阅的队列有数据就读取 case v := <-sub.C: //读取的数据是一个*stomp.Message类型 ch <- v //如果30秒还没有人发数据的话,就结束 case <-time.After(time.Second * 30): fmt.Println("timeout") } }

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2226 次点击  ∙  1 赞  
加入收藏 微博
6 回复  |  直到 2022-07-14 14:07:18
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传