1

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

    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

服务器.rb

require 'daemons'

Daemons.run('publisher.rb')

谢谢

4

1 回答 1

0

不需要恶魔。我将原始问题中的 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
于 2020-02-25T16:03:40.033 回答