go 封装 ActiveMq,并实现 topic 和 queue 的生产和消费

本文介绍了使用Go语言封装ActiveMQ并实现Topic和Queue的生产和消费。首先,文章讲解了ActiveMQ的基础知识,包括点对点通信模型和发布订阅模型。接着,作者分享了在Go中连接ActiveMQ时遇到的问题和解决方案,如如何区分推送Topic和Queue。最后,提供了具体的代码示例,展示了如何从Topic和Queue中进行消息的消费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go 封装 ActiveMq,并实现 topic 和 queue 的生产和消费

需要了解的基础知识
  • 总所周知 activemq 有两种消息传递类型分别为
    • queue Point-to-Point,点对点通信模型,即一个生产者对应一个消费者
    • topic publish-and- subscribe,发布订阅模型,一个生产者可根据订阅向多个消费者推送数据
  • go 连接 activemq 的官方推荐包为 github.com/go-stomp/stomp

go 连接 ActiveMq 遇到的坑
但由于国内使用 activemq 的公司较少,所以对于如何使用 go 操作 activemq 的资料也较少,下面我将分享一下我在使用 go 连接 activemq 上遇到的一些坑
  • 如何推送信息到 topicqueue

    使用 go-stompsend 方法推送数据给 activemq 的时候,系统是根据前缀是topic还是queue来判断推送给topic还是queue的,例如我要推送到一个名为 hello 的消息类型

    • 推送给 topic

      conn.Send("/topic/hello", "text/plain", []byte(<-c))
      
    • 推送给 queue

      conn.Send("/queue/hello", "text/plain", []byte(<-c))
      
  • 如何从 topicqueue 中消费信息

    topic 的消费一定要注意要先订阅在生产,因为 topic 属于发布订阅模式,只会推送订阅 topic 后生产的信息,就像人们订阅报纸一样,订阅下半年的报纸就只会等到下半年报纸生产了后发给你,而不会把上半年的报纸也发给你。

    queue 则无需注意什么生产的顺序,只要有消息没有被消费,那么这个消息就可以被消费,就有点像你的银行卡里的钱,不管是啥时候存进去的,只要有余额就可以取出来消费

    • 消费 topic 的消息

      	go Consumer(topic, activeMq
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值