Golang实现的新版ZMQ库:Gomq

Golang实现的新版ZMQ库:Gomq GitHub

GitHub - workspace-9/gomq: Golang 实现的 ZMQ

Golang 实现的 ZMQ。通过在 GitHub 上创建账户,为 workspace-9/gomq 的开发做出贡献。


gomq 是一个微型的 ZMQ 实现,旨在实现功能完备。请查看并给我一些反馈或提交 PR!目前仍在努力添加更多的套接字模式,因此现在还处于基本的概念验证阶段。谢谢!


更多关于Golang实现的新版ZMQ库:Gomq的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复
  • 它使应用程序能够使用各种消息传递模式进行通信,例如发布-订阅、队列等。

更多关于Golang实现的新版ZMQ库:Gomq的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


发布者-订阅者

你能提供一个示例吗

你好 Hasan,PubSub 功能尚未实现,但可能今天晚些时候会完成。我会提供一个示例,在此期间我强烈推荐你查阅 ZMQ 的文档。

这听起来是个有趣的项目!ZMQ 是一个非常强大的消息传递工具,而像 gomq 这样的轻量级实现确实会很有用。我一定会去看看,看看是否能提供一些反馈,甚至为项目做出贡献。继续努力,我期待看到它的进展!

gomq 是一个很有潜力的 ZMQ 库实现。从项目描述来看,它目前还处于概念验证阶段,专注于实现核心的 ZMQ 功能。作为 Go 语言的 ZMQ 实现,它可能更适合那些希望避免 C 依赖(如 czmq)的纯 Go 项目。

以下是一个简单的示例,展示了如何使用 gomq 进行基本的请求-响应模式通信(假设项目已实现了该模式):

package main

import (
    "fmt"
    "github.com/workspace-9/gomq/zmtp"
)

func main() {
    // 响应方(服务端)
    go func() {
        socket := zmtp.NewSocket(zmtp.Rep)
        err := socket.Bind("tcp://*:5555")
        if err != nil {
            panic(err)
        }
        defer socket.Close()

        for {
            msg, err := socket.Recv()
            if err != nil {
                fmt.Println("Recv error:", err)
                break
            }
            fmt.Printf("Received: %s\n", string(msg))

            // 发送回复
            reply := []byte("World")
            err = socket.Send(reply)
            if err != nil {
                fmt.Println("Send error:", err)
                break
            }
        }
    }()

    // 请求方(客户端)
    socket := zmtp.NewSocket(zmtp.Req)
    err := socket.Connect("tcp://localhost:5555")
    if err != nil {
        panic(err)
    }
    defer socket.Close()

    // 发送请求
    request := []byte("Hello")
    err = socket.Send(request)
    if err != nil {
        panic(err)
    }

    // 接收响应
    reply, err := socket.Recv()
    if err != nil {
        panic(err)
    }
    fmt.Printf("Reply: %s\n", string(reply))
}

需要注意的是,由于 gomq 仍在开发中,API 和功能可能发生变化。建议查看项目的最新文档和示例以获取准确的用法。对于生产环境,目前可能更适合使用成熟的库如 go-zeromqczmq 的 Go 绑定。但 gomq 作为纯 Go 实现,在依赖管理和跨平台构建方面具有优势。

回到顶部