[4] RabbitMQ – Ruby

22 marca 2022 Wyłączono przez Adam [zicherka] Nogły

To jest przykład użycia RabbitMQ na Ruby.

[1] Zainstaluj wymagane pakiety.

[root@vlsr01 ~]# dnf install ruby-devel rpm-build gcc make

[2] To jest przykład wysyłania wiadomości na Ruby.

Na przykład połącz się z RabbitMQ na [localhost] z użytkownikiem [zicherlab], virtualhost [my_vhost].

[user01@vlsr01 ~]# gem install bunny
[user01@vlsr01 ~]$ mcedit send_msg.rb
# utwórz nowy
require "bunny"
connection = Bunny.new(
    :hostname => "127.0.0.1",
    :port => 5672,
    :vhost => "/my_vhost",
    :user => "zicherlab",
    :pass => "TajneHasło",
)
connection.start
channel = connection.create_channel
q = channel.queue("Hello_World")
channel.default_exchange.publish("Hello RabbitMQ World!", :routing_key => q.name)
puts " [x] Sent 'Hello RabbitMQ World!'"
connection.close

[user01@vlsr01 ~]$ ruby send_msg.rb
 [x] Sent 'Hello RabbitMQ World!'

[3] Zainstaluj PHP na hoście odbiorcy – patrz tutaj.

[4] Zainstaluj wymagane pakiety.

[root@vlsr02 ~]# dnf install ruby-devel rpm-build gcc make

[5] To jest przykład odbierania wiadomości na Ruby.

[user01@vlsr02 ~]$ gem install bunny
[user01@vlsr02 ~]$ mcedit recive_msg.rb
# stwórz nowy
require "bunny"
Signal.trap(:INT){
    puts "Exited from receiving queues."
    exit(0)
}
connection = Bunny.new(
    :hostname => "192.168.100.101",
    :port => 5672,
    :vhost => "/my_vhost",
    :user => "zicherlab",
    :pass => "TajneHasło",
)
connection.start
channel = connection.create_channel
q = channel.queue("Hello_World")
puts " [*] Waiting for messages in #{q.name}. To exit press CTRL+C"
q.subscribe(:block => true) do |delivery_info, properties, body|
    puts " [x] Received #{body}"
    delivery_info.consumer.cancel
end

[user01@vlsr02 ~]$ ruby recive_msg.rb
 [*] Waiting for messages in Hello_World. To exit press CTRL+C
 [x] Received Hello RabbitMQ World!
# wszystko OK, wiadomość wysłana w [2] została odebrana