Opened 10 years ago
Closed 10 years ago
#176 closed enhancement (fixed)
Bypass ssh tunneling difficulties for AMQP messages
Reported by: | sdipsl | Owned by: | sdipsl |
---|---|---|---|
Priority: | major | Milestone: | libIGCM_v2.2 metrics |
Component: | AMQP message | Version: | 2.0 |
Keywords: | Cc: |
Description
Description des uses cases
https://forge.ipsl.jussieu.fr/prodiguer/wiki/docs/metric
Je n'ai pas réussi à faire la succession de tunnel ssh nécessaire aux communications AMQP, problèmes de firewall lors des rebonds.
Pour avancer, Jérôme propose de faire transiter les messages de la chaîne par mail en attendant que l'on ait fait le nécessaire auprès des centres.
Salut Sébastien, Ci-dessous une proposition de code pour faire le tunnel mail send_AMQP_msg__MAILTUNNEL () { local b64_encoded_msg=$1 local buffer=/tmp/foobar local mail_recipient="jerome.raciazek@ipsl.jussieu.fr" local send_messages=0 local mail_frequency=3600 # in seconds local last_mail_date__file=/tmp/toto # use to keep trace when was last mail sent (maybe to be replaced with global variable) # init if [ ! -f "$buffer" ]; then touch "$buffer" fi messages_count=$(wc -l $buffer") # retrieve how many pending messages if [ ! -f "$last_mail_date__file" ]; then # if we are here, it means no mail sent yet if [ $messages_count -gt 0 ]; then # send the first mail send_messages=1 fi else seconds_since_last_mail=$(( $(date +%s) - $(stat -c %Y $last_mail_date__file) )) # compute last time the file was changed (in seconds) if [ $seconds_since_last_mail -gt $mail_frequency ]; then send_messages=1 fi fi # send mail / add message in buffer if [ $send_messages -eq 1 ]; then cat $buffer | mail -s mail_recipient # send buffer > $buffer # clear buffer touch $last_mail_date__file # memorize last mail date else echo $b64_encoded_msg >> $buffer fi } Normalement, il faut juste remplacer l'appel au client-C (sendAMQPMsg) par la fonction (send_AMQP_msg__MAILTUNNEL). L'argument est le message encodé dans les deux cas. A noter que je n'ai pas testé, et aussi que cette fonction ne peut pas être lancé en parallèle, parce qu'il y a des noms de fichiers en dur (exemple, le fichier "/tmp/buffer" qui contient la liste de messages). A+ Jerome
Change History (2)
comment:1 Changed 10 years ago by sdipsl
- Owner set to sdipsl
- Status changed from new to assigned
comment:2 Changed 10 years ago by sdipsl
- Resolution set to fixed
- Status changed from assigned to closed
Note: See
TracTickets for help on using
tickets.
Done see r983