golang操作rocketmq的示例代码

作者:专职 时间:2024-04-26 17:25:41 

RocketMQ 是什么

Github 上关于 RocketMQ 的介绍:
RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性:

  • 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型

  • 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递

  • 支持拉(pull)和推(push)两种消息模式

  • 单一队列百万消息的堆积能力

  • 支持多种消息协议,如 JMS、MQTT 等

  • 分布式高可用的部署架构,满足至少一次消息传递语义

  • 提供 docker 镜像用于隔离测试和云集群部署

  • 提供配置、指标和监控等功能丰富的 Dashboard

对于这些特性描述,大家简单过一眼就即可,深入学习之后自然就明白了。

下面看下golang操作rocketmq的示例代码,内容如下所示:

下载

go get github.com/apache/rocketmq-client-go/v2

代码

func main() {
// 1. 创建主题
//CreateTopic("test-04", 10909)
// 2. 生产者向主题中发送消息
//SendSyncMessage("hello world0002")
// 3. 消费者订阅主题并消费
SubscribeMessage()
}
func CreateTopic(topicName string, port int) {
// 创建主题
testAdmin, err := admin.NewAdmin(admin.WithResolver(primitive.NewPassthroughResolver([]string{"ip:server_port"})))
if err != nil {
fmt.Println(err)
}
err = testAdmin.CreateTopic(
context.Background(),
admin.WithTopicCreate(topicName),
admin.WithBrokerAddrCreate(fmt.Sprintf("ip:%d", port)),
)
fmt.Println(err)
func SendSyncMessage(message string) {
endPoint := []string{"ip:server_port"}
p, err := rocketmq.NewProducer(
producer.WithNameServer(endPoint),
//producer.WithNsResolver(primitive.NewPassthroughResolver(endPoint)),
producer.WithRetry(2),
err = p.Start()
result, err := p.SendSync(context.Background(), &primitive.Message{
Topic: "test",
Body:  []byte(message),
})
fmt.Println(result.Status, result)
func SubscribeMessage() {
// 订阅主题、并消费
c, err := rocketmq.NewPushConsumer(
consumer.WithNameServer(endPoint),
consumer.WithConsumerModel(consumer.Clustering),
consumer.WithGroupName("GID_TEST01"),
//fmt.Println(err)
err = c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context,
msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) {
for i := range msgs {
fmt.Printf("subscribe callback: %v \n", msgs[i])
}
return consumer.ConsumeSuccess, nil
//fmt.Println(err.Error())
// Note: start after subscribe
err = c.Start()
os.Exit(-1)
c.Shutdown()

来源:https://www.cnblogs.com/mayanan/p/16106021.html

标签:golang,rocketmq
0
投稿

猜你喜欢

  • 基于pycharm实现批量修改变量名

    2022-01-23 05:46:21
  • Spring boot连接MySQL 8.0可能出现的问题

    2024-01-17 17:04:28
  • SQL语句实例说明 方便学习mysql的朋友

    2024-01-22 19:48:50
  • 学会这个炫酷图表利器pyecharts,还怕不被公司重用?

    2023-01-16 23:33:39
  • python组合无重复三位数的实例

    2021-11-18 03:59:13
  • 经典的退出浏览器弹窗代码

    2008-07-30 12:48:00
  • vue.js的vue-cli脚手架中使用百度地图API的实例

    2024-05-05 09:07:59
  • 如何通过python实现人脸识别验证

    2021-10-30 18:52:56
  • 通过mod_python配置运行在Apache上的Django框架

    2021-07-09 17:54:45
  • python+selenium+chrome批量文件下载并自动创建文件夹实例

    2022-09-14 09:56:42
  • 浅析pandas随机排列与随机抽样

    2022-03-29 21:19:00
  • MySQL 创建主键,外键和复合主键的语句

    2024-01-20 05:40:51
  • sql server中datetime字段去除时间的语句

    2024-01-23 17:47:57
  • 浅析Python 中整型对象存储的位置

    2021-10-06 13:40:20
  • 小程序实现tab更换页面效果

    2024-04-16 09:32:28
  • matplotlib绘制动画代码示例

    2021-09-09 18:02:15
  • 基于python实现把图片转换成素描

    2022-01-01 23:11:11
  • python调试工具Birdseye的使用教程

    2023-08-22 19:18:48
  • Python图片存储和访问的三种方式详解

    2021-01-27 08:18:22
  • javascript验证只能输入数字和一个小数点示例

    2024-04-22 22:29:11
  • asp之家 网络编程 m.aspxhome.com