我正在尝试在以 awsvpc 模式在 Fargate 上运行的 ECS 中使用 ZeroMQ。我有 2 个不同的服务,每个服务都运行自己的任务并启用服务发现。
我在一个名为 broker 的微服务中创建了我的 Router 和 Dealer。
front, _ := zmq.NewSocket(zmq.ROUTER)
defer front.Close()
front.Bind("tcp://*:4070")
back, _ := zmq.NewSocket(zmq.DEALER)
defer back.Close()
back.Bind("tcp://*:4080")
然后我将这 2 个套接字添加到轮询器,并有一个等待消息的 for 循环。
我有一个单独的微服务连接到套接字并尝试向经销商发送消息。我已经设置了服务发现,所以我假设我连接的地址是:
“tcp://broker:4070”
下面是来自“serviceA”的代码
func New(ZMQ models.ZMQ) *Requester {
s, err := zmq.NewSocket(zmq.REQ)
if err != nil {
log.Fatalln("shareholder/requester zmq.NewSocket", err)
}
p := zmq.NewPoller()
p.Add(s, zmq.POLLIN)
log.Println("Requester", ZMQ.Req)
err = s.Connect("tcp://broker:4070")
if err != nil {
log.Print(fmt.Errorf("err is %w", err))
}
req := &Requester{
Poller: p,
Retries: 2,
Socket: s,
Timeout: time.Duration(time.Minute),
}
runtime.SetFinalizer(req, (*Requester).Close)
return req
}
然后我使用上面的代码通过我的套接字连接发送消息
_, err := r.Socket.SendMessage(req)
但是,我的代理服务中从未收到我的消息。我可以使用我在服务发现期间注册的主机名在网络上访问我的 REST API,Fargate/ECS/ZeroMQ 有什么我在这里缺少的吗?
潇潇雨雨
繁星淼淼
相关分类