gpt4 book ai didi

ruby-on-rails - Rails应用程序中的AMQP订户

转载 作者:行者123 更新时间:2023-12-04 03:41:16 25 4
gpt4 key购买 nike

是否可以通过我的Rails应用程序启动AMQP订户?可能通过初始化程序之类的东西。

我想让它同时运行,并且还可以与Rails模型进行交互。以下是我的意思的伪代码示例。

queue.subscribe do |msg,body|
Foo.create(....)
end

最佳答案

我通常通过加载Rails环境的单独的消息传递守护程序来执行此操作。

因此,一个非常简单的示例在rails_root/script/myapp_daemon.rb中看起来像这样:



#!/usr/bin/env ruby
require 'rubygems'
require 'amqp'
require 'daemons'

ENV["RAILS_ENV"] ||= "development"
require File.dirname(__FILE__) + "/../config/environment"

options = { :backtrace => true, :dir => '.', :log_output => true}

Daemons.run_proc('myapp_daemon', options) do
EventMachine.run do
connection = AMQP.connect(:host => "127.0.0.1")

channel = AMQP::Channel.new(connection)
queue = channel.queue("/myapp_daemon", :durable => true)
exchange = channel.direct("")

queue.subscribe do |payload|
obj = JSON.parse(payload)
#... handle messages here, utilize your rails models
Foo.create(...)
end
end
end


您还需要在Gemfile中使用正确的gem要求:amqp,daemon,eventmachine

然后要么与您的应用程序一起手动运行它:
RAILS_ENV=development script/myapp_daemon.rb run

或从您的一个应用程序初始化程序启动它:
system('script/myapp_daemon.rb start')

要深入研究amqp,请查看以下内容,这将提供一个不错的高级概述:
http://www.rubyinside.com/why-rubyists-should-care-about-messaging-a-high-level-intro-5017.html

这给出了工作示例的非常详细的解释:
http://rubydoc.info/github/ruby-amqp/amqp/master/file/docs/Exchanges.textile#Publishing_messages_as_immediate_

最后看看Bunny是否可以完成您为客户端所需的一切,这很简单:
https://github.com/celldee/bunny/wiki/Using-Bunny

希望能有所帮助

关于ruby-on-rails - Rails应用程序中的AMQP订户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com