Guest User

Untitled

a guest
Apr 11th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. require 'rubygems'
  2. require 'mq'
  3.  
  4. trap("INT") do
  5. puts "int"
  6. ## what goes here? ##
  7. end
  8.  
  9. module Messaging
  10. def self.thread
  11. @thread ||= Thread.new { EM.run {} }
  12. end
  13.  
  14. def self.amqp
  15. thread
  16. @amqp ||= open_connection
  17. end
  18.  
  19. def self.open_connection
  20. amqp = AMQP.connect(:user => 'dan', :pass => 'xxx'
  21. :host => "localhost", :port => 5672)
  22. puts "Connected to AMQP"
  23. amqp
  24. end
  25.  
  26. def self.queue(name)
  27. MQ.new(amqp).queue(name)
  28. end
  29.  
  30. def self.delete(name)
  31. queue(name).delete
  32. end
  33.  
  34. def self.subscribe(name)
  35. queue(name).subscribe do |msg|
  36. puts "received #{msg.hash} from #{name}"
  37. yield msg
  38. end
  39. puts "subscribed to #{name}"
  40. end
  41.  
  42. def self.publish(name, msg)
  43. puts "publishing #{msg.hash} to #{name}"
  44. queue(name).publish(msg)
  45. end
  46. end
  47.  
  48. Messaging.subscribe("lots_connections") do |msg|
  49. puts "starting #{msg}..."
  50. sleep 5
  51. puts "done #{msg}."
  52. end
  53.  
  54. 10000.times do |i|
  55. Messaging.publish("lots_connections", i.to_s)
  56. sleep 3
  57. end
Add Comment
Please, Sign In to add comment