RabbitMQ 1 - RabbitMQ ile Merhaba Dünya Örneği

Bir önceki makalemizde aşağıdaki konulardan bahsettik;

  • RabbitMQ nedir?
  • Özellikleri nedir?
  • Kimler kullanmalıdır?
  • Kurulumu nasıl yapılmalıdır?

Şimdi basit bir ‘Merhaba Dünya’ uygulaması ile RabbitMQ'da ilk mesajımızı gönderecek ve alacağız. Aşağıdaki grafik yapılacak işlemi gösterecektir.

Örnek 1

Mesajın gönderilmesi

  • RabbitMQ'ya bağlanmak için
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start
  • Yeni bir kanal yaratmak için
ch   = conn.create_channel
  • Yaratılan kanaldan bir queue isimlendirip mesaj göndermek için
q    = ch.queue("hello")
ch.default_exchange.publish("Hello World!", :routing_key => q.name)
puts " [x] Sent 'Hello World!'"
  • Bağlantıyı kapatmak için
conn.close
  • Hepsini birleştirip sender.rb dosyasını oluşturalım.
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch   = conn.create_channel

q    = ch.queue("hello")
ch.default_exchange.publish("Hello World!", :routing_key => q.name)
puts " [x] Sent 'Hello World!'"

conn.close

Mesajın alınması

  • RabbitMQ'a bağlanmak, yeni bir kanal açmak ve kuyruğu tanımlamak için
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch   = conn.create_channel
q    = ch.queue("hello")
  • Mesajları dinlemek için Bunny::Queue#subscribe methodu kullanılır.
begin
  puts " [*] Waiting for messages. To exit press CTRL+C"
  q.subscribe(:block => true) do |delivery_info, properties, body|
    puts " [x] Received #{body}"
  end
rescue Interrupt => _
  conn.close
  exit(0)
end
  • Hepsini birleştirip receiver.rb dosyasını oluşturalım.
#!/usr/bin/env ruby
# encoding: utf-8

require "bunny"

conn = Bunny.new(:automatically_recover => false)
conn.start

ch   = conn.create_channel
q    = ch.queue("hello")

begin
  puts " [*] Waiting for messages. To exit press CTRL+C"
  q.subscribe(:block => true) do |delivery_info, properties, body|
    puts " [x] Received #{body}"
  end
rescue Interrupt => _
  conn.close
  exit(0)
end

Terminalden dosyaları çalıştıralım.

Unutmayın ayrı ayrı sekmelerde çalıştıracaksınız!

$ ruby -rubygems send.rb
$ ruby -rubygems receive.rb

Sonuçları terminal çıktılarından görebileceğiniz gibi http://localhost:15672/ adresinden veya terminalden rabbitmqctl list_queues kodu ile de görebilirsiniz.

Bundan sonraki makalemiz RabbitMQ ve iş kuyrukları üzerine olacaktır.

Saygılar.

Kaynaklar

comments powered by Disqus