1

我是 Amazon SQS 和 ruby​​ on rails 的新手。我正在研究一个必须将一些 XML 消息发送到 SQS 的项目。我怎么做?

现在我在 .save 之后的控制器中有这个

 def create

    @thing = Thing.new(params[:thing])

    respond_to do |format|

      if @thing.save
        message = @thing.to_xml

并且在模型中

inputqueue.send_message(message) 

这是我可以将 XML 文件发送到 SQS 的方式还是?

4

2 回答 2

1

我不确定我是否完全理解,但让我试着弄清楚这一点。每次创建特定模型时,您都想向 Amazon SQS 发送一条 XML 消息?如果是这样的话,那么...

保持你的控制器是这样的:

def create
  @thing = Thing.new(params[:thing])

  if @thing.save
    #render view/partial/other
  else
    #display errors to user
end

然后,您将使用Observer调用 Amazon。将您的观察者放在您的模型目录中:

/app/models/Thing.rb
/app/models/ThingObserver.rb

您的观察者可能看起来像:

class ThingObserver < ActiveRecord::Observer
  def after_create(thing)
    AmazonSQSPlugin.send(thing.to_xml)
  end
end

观察者中的代码将在每次创建后运行。如果观察者中的 after_create 返回false,则整个创建被回滚,就好像它从未发生过一样。

不过,您可能需要编辑环境配置才能触发观察者,具体取决于您的应用程序当前的设置方式。

于 2009-11-03T02:57:56.783 回答
0

RightAws::SqsGen2.queue(queue_name, message) 是发送消息的正确方法。

于 2009-11-12T19:52:42.960 回答