golang:高性能消息队列moonmq的简单使用

在上一篇moonmq的介绍中(这里),我只简短的罗列了一些moonmq的设计想法,可是对于怎样使用并没有具体说明,公司同事无法非常好的使用。

对于moonmq的使用,事实上非常easy,例子代码在这里,我们仅仅须要处理好broker,consumer以及publisher的关系就能够了。

首先,我们须要启动一个broker,由于moonmq如今仅仅支持tcp的自己定义协议,所以broker启动的时候须要指定一个listen
address。

#启动broker
./simple_broker -addr=127.0.0.1:11182

启动了broker之后,我们就能够向该broker发送消息

#向test这个queue发送 hello msg
./simple_publisher -addr=127.0.0.1:11182 -queue=test -msg=hello

然后在还有一个shell里面接收消息

#接收test这个queue的消息
./simple_consumer -addr=127.0.0.1:11182 -queue=test

#output get msg: hello


假设没有消息,那么consumer就会一直等待,直到接收到消息。

这里具体说一下consumer的实现,

  • 创建一个与broker的连接

      //create a client for use
    client := NewClient(config)

    //get a usable connection
    conn, _ := client.Get()


  • 绑定queue

      //bind a queue
    //queue name : test
    //routingKey : ""
    //noAck : true
    ch, _ := conn.Bind("test", "", true)

  • 接收消息

      //receive msg, block to wait until a msg received
    msg := ch.GetMsg()
    println(msg)

  • 回执消息

      //if channel noAck is false, we must ack
    ch.Ack()

从上面的样例能够看出,使用moonmq非常方便,兴许我准备增加http的支持,使其更easy使用。

moonmq的代码在这里https://github.com/siddontang/moonmq

golang:高性能消息队列moonmq的简单使用,布布扣,bubuko.com

时间: 2024-10-06 01:52:00

golang:高性能消息队列moonmq的简单使用的相关文章

高性能消息队列 CKafka 核心原理介绍(上)

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:闫燕飞 1.背景 Ckafka是基础架构部开发的高性能.高可用消息中间件,其主要用于消息传输.网站活动追踪.运营监控.日志聚合.流式处理.事件追踪.提交日志等等需要高性能的场景,目前已经上线腾讯云.Ckafka完全兼容现有的Kafka协议,使现有Kafka用户可以零成本迁入Ckafka.Ckafka基于现有的Kafka进行了扩展开发和优化,为了方便用户理解Ckafka本文也将对Kafka的实现原理进行较为详细的介绍. 2.Kaf

新手也能看懂,消息队列其实很简单

消息队列其实很简单 “RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词.我也在我的多篇文章中提到了这个概念.可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论.如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖. 一 什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当

AMQP消息队列之RabbitMQ简单示例

前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个图来概览下: 1.添加Maven依赖 <!-- rabbitmq begin --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit

消息队列 ActiveMQ的简单了解以及点对点与发布订阅的方法实现ActiveMQ

Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件: 由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. ActiveMQ是用来干什么的? 用来处理消息,也就是处理JMS的.消息队列在大型电子商务类网站,如京东.淘宝.去哪儿等网站有着深入的应用, 队列的主要作用是消除高并发访问高峰,加快网站的响应速度. 在不使用消息队列的情况下,用户的请求数据直接写入数据库,高发的情况下,会对数据库造成巨大的压力, 同时也使

Lua 下实现一个简单的消息队列

Lua 下实现一个简单的消息队列,如下简单的几条代码就可以了. local q1 = {} local q2 = {} -- 产生消息只需要 table.insert(q1, msg) -- 分发消息需要两层循环, 可以处理 dispatch 过程中产生的新消息 while q1[1] do q1,q2 = q2,q1 for i=1,#q2 do dispatch(q2[i]) q2[i] = nil end end

去哪儿网可用 消息队列

<去哪儿网技术专场>之 主题一:<去哪儿网可用 高性能 消息队列> 简介: 消息队列一般应用在广播通知.异步操作.数据复制. 为什么我们不用开源的消息队列? 我们开发的消息队列如何实现 “高可用”? 我们开发的消息队列如何实现 “高性能”?

【Linux】 进程通信--消息队列

一.概念 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法.  每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值.我们可以通过发送消息 来避免命名管道的同步和阻塞问题.消息队列与管道不同的是,消息队列是基于消息的, 而管道是基于字节流的,且消息队列的读取不?定是先入先出.消息队列与命名管道有一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有?个上限(MSGMNI). 查看机

linux下,采用消息队列实现进程通信 (待续)

消息队列 是进程间通信的一种方式,它不像管道那样是基于字节流,而是基于消息. 也就是说,消息队列不一定是先进先出了. 这次我用消息队列实现一个简单的进程间通信程序,让两个进程server和client进行通信 (由于要准备学校的期末考试,先贴代码和运行结果,原理分析之后补上) 程序结构: Makefile: comm.h & comm.c: msg_server.h & msg_client.h: msg_server.c: msg_client.c 运行结果: 先启动服务器: (错误13

基于消息队列的双向通信

消息队列提供了一种一个进程向另一个进程发送一个数据块的方法.消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的.消息队列的创建或取得一个已存在的消息队列:     int msgget(key_t key,int msgflag);其中的参数:        key: 由ftok函数生成:        msgflag:        IPC_CREAT:如果ipc不存在,则创建一个ipc资源,否则直接打开        IPC_EXCL:本身没有太大的意义,只有和 IPC_CR