【问题标题】:Keep publishing data via publisher RabbitMQ (ruby bunny)继续通过发布者 RabbitMQ (ruby bunny) 发布数据
【发布时间】:2020-05-29 08:41:06
【问题描述】:

我有一个兔子使用 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 应用程序?

publisher.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')

谢谢

【问题讨论】:

  • 对,我添加了一个 while 循环让发布者继续运行直到停止。 i = 0 而 i
  • 问题解决了吗?也许更新您的问题,让我们知道您是否需要帮助:)

标签: ruby-on-rails ruby rabbitmq daemons bunny


【解决方案1】:

不需要恶魔。我将原始问题中的 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

【讨论】:

    猜你喜欢
    • 2022-08-09
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多