Super Simple Message Queuing

Angelegt von niklas Mon, 02 Aug 2010 00:08:00 GMT

It's a fu**ing simple publish/subscribe implementation:

Preparation

sudo gem install amqp # gem that implements AMQP (see link below)
sudo apt-get install rabbitmq-server # super-fast MQ server, written in Erlang/OTP

First Process (subscriber)

Save as subscriber.rb
require 'rubygems'
require 'mq'

EM.run {
  queue = MQ.new.queue('foo')
  queue.subscribe do |data|
    $stderr.puts "[#{Time.now}] RECEIVED: #{data.inspect}"
  end
}

Second Process (publisher)

Save as publisher.rb
require 'rubygems'
require 'mq'

EM.run {
  queue = MQ.new.queue('foo')
  10.times do |i|
    queue.publish("Message ##{i}")
  end
}

Run subscriber

Run this:
ruby subscriber.rb

Run publisher

Fire up a new terminal and run:
ruby publisher.rb

Output of subscriber

The publisher won't give you any output, but the subscriber will print each message received through the queue to stderr:
[Mon Aug 02 02:02:55 +0200 2010] RECEIVED: "Message #0"
[Mon Aug 02 02:02:58 +0200 2010] RECEIVED: "Message #1"
[Mon Aug 02 02:03:01 +0200 2010] RECEIVED: "Message #2"
[Mon Aug 02 02:03:05 +0200 2010] RECEIVED: "Message #3"
[Mon Aug 02 02:03:08 +0200 2010] RECEIVED: "Message #4"
[Mon Aug 02 02:03:11 +0200 2010] RECEIVED: "Message #5"
[Mon Aug 02 02:03:14 +0200 2010] RECEIVED: "Message #6"
[Mon Aug 02 02:03:17 +0200 2010] RECEIVED: "Message #7"
[Mon Aug 02 02:03:20 +0200 2010] RECEIVED: "Message #8"
[Mon Aug 02 02:03:23 +0200 2010] RECEIVED: "Message #9"
[Mon Aug 02 02:03:26 +0200 2010] RECEIVED: "Message #10"

Conclusion

REALLY light weight message queue for local processes, based on a open standard.
Trackbacks

Verwenden Sie den folgenden Link zur Rückverlinkung von Ihrer eigenen Seite:
http://praktikanten.brueckenschlaeger.org/trackbacks?article_id=150

Leave a comment

Comments