Angelegt von niklas
Thu, 07 Oct 2010 16:20:00 GMT
Investigating the code of Diaspora, a distributed social network, which is in
very early development, yet hyped quite a lot already.
read more...
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 publisher
Fire up a new terminal and run:
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.