JDJDJD
November 28, 2007, 4:36pm
1
Bonjour,
J’utilise actuellement stompserver et activemessaging pour déléguer
certaine tâches longues (comme de l’encodage vidéo) et cela fonctionne
très bien.
Maintenant, je souhaiterai pouvoir interroger stompserver pour savoir si
la tâche est terminée (et renvoyer l’info sur la page par un
perodically_call_remote).
Je ne sais pas comment m’y prendre pour aller interroger stompserver.
Merci pour vos suggestions et exemples
Mon code :
dans mon model video.rb :
def encode_flv
video_native = self.public_filename
video_flv = self.path_filename_flv
publish(:encoder_processor,"#{self.id}",
{
:video_native_path => video_native,
:video_flv_path => video_flv
})
end
dans mon processors encoder_processor.rb :
subscribes_to :encoder_processor
def on_message(message)
logger.debug “EncoderProcessor received: " + @message.to_s
@headers = @message.headers
application_path = RAILS_ROOT+”/"
video_native_path = application_path+@headers[‘video_native_path’]
video_flv_path = application_path+@headers[‘video_flv_path’]
cmd = “mencoder …”
system(cmd)
if File.file?(video_native_path)
raise unless system(cmd)
end
end
JD
JDJDJD
November 28, 2007, 4:54pm
2
JD wrote the following on 28.11.2007 16:35 :
Je ne sais pas comment m’y prendre pour aller interroger stompserver.
Ce que tu veux n’est pas possible en interrogeant stompserver.
Je suggère d’associer un ticket à ta tâche au moment de l’envoi (en
envoyant le numéro de ticket avec la tâche) qui sera matérialisé par une
ligne en BDD créé par le processus mettant en file d’attente la tâche.
L’identifiant du ticket peut alors être stocké en session pour
surveiller l’avancement. Le processus qui traite la demande n’a alors
qu’à mettre à jour le ticket en fonction de son avancement, ce qui est
beaucoup plus souple qu’un simple check auprès de stompserver.
Lionel
JDJDJD
November 28, 2007, 5:15pm
3
Le mercredi 28 novembre 2007 à 16:53 +0100, Lionel B. a écrit :
Je ne sais pas comment m’y prendre pour aller interroger stompserver.
Ce que tu veux n’est pas possible en interrogeant stompserver.
ok
Je suggère d’associer un ticket à ta tâche au moment de l’envoi (en
envoyant le numéro de ticket avec la tâche) qui sera matérialisé par une
ligne en BDD créé par le processus mettant en file d’attente la tâche.
L’identifiant du ticket peut alors être stocké en session pour
surveiller l’avancement. Le processus qui traite la demande n’a alors
qu’à mettre à jour le ticket en fonction de son avancement, ce qui est
beaucoup plus souple qu’un simple check auprès de stompserver.
ok, c’est une bonne solution.
J’étais parti simplement sur la mise à jour de mon objet en y ajoutant
un champs booléen :operation_terminee à la fin du processor. J’étais sur
la bonne voie donc
Merci pour cette réponse… et vive stompserver !
JD