Administrateur du serveur : un abonné local

Cet exemple explique comment s’abonner aux fichiers swob du bureau météorologique d’Environnement Canada.

$ sudo apt install rabbitmq-server
$ sudo rabbitmqctl list_users
  Listing users ...
  user    tags
  guest   [administrator]

$ sudo rabbitmqctl add_user 'bob'
  Adding user "bob" ...
  Password: robert

$ sudo rabbitmqctl list_vhosts
  Listing vhosts ...
  name
  /

Définir les autorisations d’utilisateur pour vhost pour configurer bob:read:write:

$ sudo rabbitmqctl set_permissions -p "/" "bob" ".*" ".*" ".*"
  Setting permissions for user "bob" in vhost "/" ...

$ sudo rabbitmqctl set_user_tags bob management
  Setting tags for user "bob" to [management] ...

$ sudo rabbitmq-plugins enable rabbitmq_management
$ /etc/init.d/rabbitmq-server restart

Pour plus d’informations sur les différents types de balises d’utilisateur, voir rabbitmq access and permissions. Ouvrez http://localhost:15672/ dans un navigateur Web. Connectez-vous avec le nom d’utilisateur/mot de passe créé ci-dessus. Cliquez sur l’onglet Queues pour surveiller la progression du point de vue du courtier. Retour dans le terminal:

$ mkdir .config/sarra/subscribe
$ vi .config/sarra/subscribe/test-subscribe.conf
  broker amqp://bob:robert@localhost/
  exchange xs_bob
  directory /tmp/sarra/output
  accept .*

Configurez les bits qui publient les modifications apportées à l’échange

$ mkdir .config/sarra/watch
$ vi $_/test-watch.conf
  post_broker amqp://bob:robert@localhost/
  post_exchange xs_bob
  path /tmp/sarra/input/
  events modify,create

$ mkdir -p /tmp/sarra/{in,out}put
$ sr3 start
$ sr3_watch log test-watch

–> Tous les rapports normaux.:

$ sr_subscribe log test-subscribe
  .
  .
  2020-08-20 16:29:26,111 [ERROR] standard queue name based on:
    prefix=q_bob
    component=subscribe
    exchangeSplit=False
    no=1

–> Notez la ligne avec [ERROR], elle n’a pas pu trouver la fil d’attente. c’est parce que la fil d’attente doit d’abord être créée par sr3_watch et puis que que nous avons commencé l’abonné et watch en même temps avec ‘sr start’ nous sommes tombés dans une petite condition de course. Cela a été résolu peu de temps après car le sr_subscribe a un temps de nouvelle tentative de 1 seconde. Cela peut être confirmé avec la page ‘RabbitMQ Queues’ affichant une q_bob.sr_subscribe.test_subscribe. ... fil d’attente dans la liste.:

$ touch /tmp/sarra/input/testfile1.txt
$ ls /tmp/sarra/input/
  testfile1.txt
$ ls /tmp/sarra/output/
    testfile1.txt
$ sr_subscribe log test-subscribe
  .
  .
  2020-08-20 16:29:26,078 [INFO] file_log downloaded to: /tmp/sarra/output/testfile1.txt

$ sr3_watch log test-watch
  2020-08-20 16:29:20,612 [INFO] post_log notice=20200820212920.611807823 file:/ /tmp/sarra/input/testfile1.txt headers={'to_clusters':'localhost', 'mtime':'20200820212920.0259232521', 'atime': '20200820212920.0259232521', 'mode': '644', 'parts': '1,0,1,0,0', 'sum':'d,d41d8cd98f00b204e9800998ecf8427e'}

$ touch /tmp/sarra/input/testfile{2..9}.txt
$ for i in {001..015}; do echo "file #$i" > file$i.txt; done
$ watch -n 1 ls /tmp/sarra/output/

Maintenant, vous pouvez regarder les fichiers ruisseler dans le dossier de sortie, Regardez également la page ‘RabbitMQ Queues’ qui recoit et traite les messages AMQP. Lorsque tout est terminé, vous pouvez arrêter à la fois l’abonné et le watcher avec:

$ sr3 stop
  ...
$ sr_subscribe cleanup test-subscribe
  ...

Maintenant, la fil d’attente a été supprimée de RabbitMQ et tous les services ont été arrêtés.