我一直在玩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)