2009-11-02 8 views
1

Je suis un débutant à Amazon SQS et Ruby on rails. Et je travaille sur un projet que certains messages XML doivent être envoyés à SQS. Comment je fais ça?Envoyer un message XML à Amazon SQS

Maintenant, j'ai ce dans le contrôleur après la .save

def create 

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

    respond_to do |format| 

     if @thing.save 
     message = @thing.to_xml 

et dans le modèle

inputqueue.send_message(message) 

Est-ce la façon dont je peux envoyer un fichier XML à SQS ou ??

Répondre

1

Je ne suis pas sûr de comprendre exactement, mais laissez-moi essayer de comprendre. Chaque fois que vous créez un modèle particulier, vous souhaitez envoyer un message XML à Amazon SQS? Si tel est le cas, alors ...

garder votre contrôleur comme si:

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

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

Ensuite, vous utiliserez un Observer pour faire l'appel à Amazon. Mettez votre observateur à l'intérieur de votre répertoire modèles:

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

Votre observateur pourrait ressembler à:

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

Le code de l'observateur sera exécuté après chaque créer. Si after_create dans l'observateur renvoie false, la création entière est annulée, comme si elle ne s'était jamais produite.

Vous devrez peut-être modifier votre configuration d'environnement pour que l'observateur fonctionne, en fonction de la configuration de votre application.

+0

Merci pour votre aide! J'ai l'observateur qui court. Et im en utilisant le plugin 'RightAws :: SqsGen2'. donc j'ai fait cette def after_create (chose) RightAws :: SqsGen2.send (thing.to_xml) fin mais il donne une erreur de méthode non définie. – bartligthart

+0

Quelle est l'erreur exacte? –

0

RightAws :: SqsGen2.queue (nom de la file d'attente, message) est la bonne façon d'envoyer le message.