Go 是否可以使用ZMQ代理作为“开关”?

Go 是否可以使用ZMQ代理作为“开关”?,go,zeromq,Go,Zeromq,我将实现以下图表: 只是让所有数据生成器将数据发布到所有数据接收器。 数据接收器仍应具有设置订阅的能力 // Proxy package main import zmq "github.com/pebbe/zmq4" func main() { publisher, _ := zmq.NewSocket(zmq.XPUB) defer publisher.Close() publisher.Bind("tcp://*:8080") subscriber,

我将实现以下图表:

只是让所有数据生成器将数据发布到所有数据接收器。 数据接收器仍应具有设置订阅的能力

// Proxy
package main

import zmq "github.com/pebbe/zmq4"

func main() {
    publisher, _ := zmq.NewSocket(zmq.XPUB)
    defer publisher.Close()
    publisher.Bind("tcp://*:8080")

    subscriber, _ := zmq.NewSocket(zmq.XSUB)
    defer subscriber.Close()
    subscriber.Bind("tcp://*:8081")

    zmq.Proxy(subscriber, publisher, nil)
}
和数据发生器:

// Data generator
package main

import (
    zmq "github.com/pebbe/zmq4"
    "time"
)

func main() {
    publisher, _ := zmq.NewSocket(zmq.PUB)
    defer publisher.Close()
    publisher.Connect("tcp://127.0.0.1:8081")

    for {
        publisher.Send("Some msg", 0)
        time.Sleep(time.Second)
    }
}
和数据接收器:

// Data receiver
package main

import (
    "fmt"
    zmq "github.com/pebbe/zmq4"
)

func main() {
    subscriber, _ := zmq.NewSocket(zmq.SUB)
    defer subscriber.Close()
    subscriber.Connect("tcp://127.0.0.1:8080")

    for {
        msg, _ := subscriber.Recv(0)
        fmt.Println(msg)
    }
}

在我看来,它应该起作用,但它不是。我做错了什么?

要接收任何数据,订阅者套接字应使用一些筛选器指定SetSubscibe。请参见

在代理的套接字监视器中,我看到事件\u已接受和事件\u已断开连接的消息。