⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10 - implementing a distributed queue.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
#!/usr/bin/ruby# queue_server.rbrequire 'thread'     # For Ruby's thread-safe Queuerequire 'drb'$SAFE = 1            # Minimum acceptable paranoia level when sharing code!def run_queue(url='druby://127.0.0.1:61676')  queue = Queue.new  # Containing the jobs to be processed  # Start up DRb with URI and object to share  DRb.start_service(url, queue)  puts 'Listening for connection...'  while job = queue.deq    yield job  endend#---run_queue do |job|  case job['request']  when 'Report'    puts "Reporting for #{job['from']}...  Done."  when 'Process'    puts "Processing for #{job['from']}..."    sleep 3          # Simulate real work    puts 'Processing complete.'  endend#---$ ruby queue_server.rbListening for connection...Processing for Client 1...Processing complete.Processing for Client 2...Processing complete.Reporting for Client 1...  Done.Reporting for Client 2...  Done.Processing for Client 1...Processing complete.Reporting for Client 2...  Done....#---#!/usr/bin/ruby# queue_client.rbrequire 'thread'require 'drb'# Get a unique name for this clientNAME = ARGV.shift or raise "Usage:  #{File.basename($0)} CLIENT_NAME"DRb.start_servicequeue = DRbObject.new_with_uri("druby://127.0.0.1:61676")20.times do  queue.enq('request' => ['Report', 'Process'][rand(2)], 'from' => NAME)  sleep 1  # simulating network delaysend#---

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -