簡體   English   中英

繼續通過發布者 RabbitMQ (ruby bunny) 發布數據

[英]Keep publishing data via publisher RabbitMQ (ruby bunny)

我有一個兔子的 RabbitMQ 使用 consumer.rb 和publisher.rb 工作。 如果我跑

    ruby consumer.rb

進而

    publisher.rb 

我得到正在發布的數據(數據來自另一個類)。 當我運行publisher.rb時,數據在ruby consumer.rb上打印如下:

Test New Data
1142.5186392493372

我需要這兩個腳本不斷運行,以便發布者不斷推送數據(@devise.value),我不斷看到上述輸出。 我嘗試使用 Daemon 創建一個新的服務器文件並運行 ruby​​ server.rb start。 但這確實會繼續運行publisher.rb,但不會一直運行,因此它會發布數據。 另外我怎樣才能讓這個 RabbitMQ ruby​​ 應用程序將數據發布到另一個基於 web 的 Rails 應用程序?

發布者.rb

需要“兔子”需要“守護進程”

類 BunnyPublisher

def connection
    conn = Bunny.new
    conn.start
end 

def channel
    connection.create_channel
end

def q
    channel.queue("que")
end

def exchange
    channel.default_exchange
end

def publish(data, q)
    exchange.publish(data, routing_key: "que") 

    sleep(5)

    connection.close
end

服務器文件

require 'daemons'

Daemons.run('publisher.rb')

謝謝

不需要惡魔。 我將原始問題中的 Publisher 類代碼更改為當前的類代碼。 如上所述,我添加了一個 while 循環。

運行發布者的 ruby​​ 文件:

i = 0
while i < 1
data = { 
            weight: @devise.value, 
            pressure: @devise.value
        }
    m = data.to_json;
    @pub.publish(m, routing_key: @q) // @pub: Publisher class
end

在發布者類中:

def publish(data, q)
    exchange.publish(data, routing_key: "queue_name") //exchange another method

    sleep(5) //Publish every 5 seconds

    connection.close
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM