2014-11-06 55 views
0

我一直在玩ZMQ并喜欢它。我正在使用它来构建分布式测试执行应用程序,以便与Cucumber一起使用。虽然我有问题。我正在使用内置的int zmq_proxy使用简单的扩展Req> Proxy> Reply模式。我已经设置好了所有组件,当我在本地运行所有组件时,所有组件都位于我的机器上,一切正常。但是,当我把工作人员(Rep套接字)放在网络上的另一台机器上时,Rep套接字似乎无法连接到我传入zmq_proxy的Dealer套接字。我已经在两台机器上测试了一个简单的req> rep,并且工作得很好。这个问题似乎只是与代表>代理>代表模式。设置看起来很简单,并将代码放置在下面,但我似乎无法使其工作。任何帮助将不胜感激。ZMQ REP插座没有连接代理商的经销商部分

这一切都在Ruby 1.9.3 btw中完成。另外,在下面的设置中,当Worker在远程机器上时,Client和代理位于同一台机器上。

客户端(要求插座) 需要 '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

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