ZMQ REP套接字未连接代理的Dealer部分

时间:2014-11-06 00:49:37

标签: ruby zeromq

我一直在玩ZMQ并喜欢它。我正在使用它来构建一个与Cucumber一起使用的分布式测试执行应用程序。我虽然遇到了问题。我正在使用一个简单的扩展Req>代理>使用内置的int zmq_proxy回复模式。我已经完成了所有设置,当我在本地运行所有组件都位于我的机器上时,一切都运行良好。但是当我将工作者(Rep套接字)放在网络上的另一台机器上时,Rep套接字似乎没有连接到我传递给zmq_proxy的Dealer套接字。我测试了一个简单的req>两台机器上的代表,工作得很好。问题似乎只有代表>代理>代表模式。设置似乎很简单,并将下面的代码,但我似乎无法让它工作。任何帮助将不胜感激。

这一切都是在Ruby 1.9.3顺便说一下完成的。此外,在下面的设置中,当工作人员在远程计算机上时,客户端和代理服务器位于同一台计算机上。

客户端(需求套接字)     要求'ffi-rzmq'

context = ZMQ::Context.new
socket = context.socket(ZMQ::REQ)
socket.connect('tcp://127.0.0.1:5550')

socket.send_string "This is a message"

reply = ''

socket.recv_string reply

puts reply

工人(代表套接字)

require 'ffi-rzmq'

context = ZMQ::Context.new
socket = context.socket(ZMQ::REP)
socket.connect 'tcp://ipAddressToDealer:5551'

message = ''

socket.recv_string message

puts message

socket.send_string "Got the messsage"

代理

require 'ffi-rzmq'

context = ZMQ::Context.new
front_end_socket = context.socket(ZMQ::ROUTER)
front_end_socket.bind('tcp://*:5550')

back_end_socket = context.socket(ZMQ::DEALER)
back_end_socket.bind('tcp://*:5551')

ZMQ::Device.new(front_end_socket, back_end_socket)

1 个答案:

答案 0 :(得分:0)

事实证明,Windows防火墙阻止了Ruby解释器。我在防火墙中为解释器添加了例外,一切正常。不知道为什么它显示了它所做的症状。我会想象简单的请求> rep请求也会被阻止。哦,问题解决了。