我一直在玩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)
答案 0 :(得分:0)
事实证明,Windows防火墙阻止了Ruby解释器。我在防火墙中为解释器添加了例外,一切正常。不知道为什么它显示了它所做的症状。我会想象简单的请求> rep请求也会被阻止。哦,问题解决了。