2009-11-02 138 views
1

我是亞馬遜SQS和Ruby on Rails的新手。我正在開發一個項目,一些XML消息必須發送給SQS。我怎麼做?發送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或方式?

回答

1

我不確定我是否完全理解,但讓我試着弄清楚這一點。每次創建特定模型時,您都希望將XML消息發送給Amazon SQS?如果是這樣的話,那麼......

保持你的控制器這樣:

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

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

然後,你將使用一個Observer,使調用亞馬遜。把你的右觀察員的車型目錄中:

/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,則整個創建會回滾,就好像它從未發生過一樣。

您可能需要編輯環境配置才能讓觀察者觸發,具體取決於您的應用程序當前的設置。

+0

感謝您的幫助!我有觀察員在跑。並即時使用'RightAws :: SqsGen2'插件。 所以我做了這個 高清after_create(事) RightAws :: SqsGen2.send(thing.to_xml) 結束 ,但它提供了一個未定義的方法錯誤。 – bartligthart 2009-11-03 12:23:21

+0

確切的錯誤是什麼? – 2009-11-03 14:38:07

0

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