From be44243136d710eec0345f8459a64da377bab357 Mon Sep 17 00:00:00 2001 From: Simeon Simeonov Date: Sun, 29 Mar 2026 13:43:38 +0200 Subject: Re-format reveal.js slides and add templates --- reveal.js/rabbitmq.html | 311 ------------------------------------------------ 1 file changed, 311 deletions(-) delete mode 100644 reveal.js/rabbitmq.html (limited to 'reveal.js/rabbitmq.html') diff --git a/reveal.js/rabbitmq.html b/reveal.js/rabbitmq.html deleted file mode 100644 index 6d1ba7a..0000000 --- a/reveal.js/rabbitmq.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - RabbitMQ - Intern opplæring - - - - - - - - - - - - - - -
- - -
-
-

RabbitMQ

-

Intern opplæring

-
-

- Simeon Simeonov -

-
- -
-
-

Agenda

-
-
    -
  • Installasjon
  • -
  • Administrasjon
  • -
  • Utvikling
  • -
  • Diverse + Q&A
  • -
-
-
- -
-
-

Installasjon og oppsett

-
-
    -
  • Skaffe seg maskin og SSL sertifikat(er)

  • -
  • Bruke Ansible

  • -
  • Opprette administrator-bruker og slette guest-brukeren

  • -
  • Sette rettigheter og opprette entiteter

  • -
-
-
-

Ansible

-
-

Vi bruker repo UAIT/int-ansible-hosts

-

Etter å ha installert Ansible på lokalmaskina gjør vi følgende:

-
    -
  • git clone ssh://git@bitbucket.usit.uio.no:7999/uait/int-ansible-hosts.git

  • -
  • cd int-ansible-hosts

  • -
  • ansible-playbook --ask-become-pass -v --extra-vars '{"hosts": "mq-hostname"}' rabbitmq_playbook.yml

  • -
-

RabbitMQ skal nå være installert og tilgjengelig på https://mq-hostname

-
- -
-

Administrator-bruker

-
-

Brukeren guest med passord guest vil eksistere etter at Ansible har kjørt

-

I tillegg til webgrensesnittet, kan en bruke rabbitmqctl

-
    -
  • rabbitmqctl list_users (Lister alle eksisterende RabbitMQ-brukere)

  • -
  • rabbitmqctl add_user rmq_admin <passord> (Legger til dedikert admin bruker rmq_admin)

  • -
  • rabbitmqctl set_user_tags rmq_admin administrator (Gir administrator rolle til rmq_admin)

  • -
  • rabbitmqctl delete_user guest (Sletter brukeren guest)

  • -
-
- -
-

vhost

-
-

vhost fungerer som en beholder (container) for RabbitMQ/AMQP objekter. Nok igjen kan en velge mellom webgrensesnitt og rabbitmqctl

-
    -
  • rabbitmqctl list_vhosts (Lister alle eksisterende vhosts)

  • -
  • rabbitmqctl add_vhost /no/uio/integration (Oppretter vhost med navn /no/uio/integration)

  • -
-
- -
-

Rettigheter

-

RabbitMQ implementerer 2 rettighetsnivåer(*):

-
    -
  • Per vhost
  • -
  • Per entitet
  • -
-

RabbitMQ definerer 3 typer operasjoner:

-
    -
  • configure - opprette / slette entiteter eller endre deres oppførsel

  • -
  • write - skrive melding til en entitet

  • -
  • read - lese melding fra entitet

  • -
-

(*) - /etc/rabbitmq/rabbitmq.config gir flere muligheter

-
- -
-

Rettigheter og brukere

-

RabbitMQ bruker regular expressions til å definere rettigheter

-
    -
  • rabbitmqctl add_user cerebrum <passord>

  • -
  • rabbitmqctl add_user uio_ad_microservice <passord>

  • -
  • rabbitmqctl set_permissions -p /no/uio/integration cerebrum "^$" "^ex_.*" "^$"

  • -
  • rabbitmqctl set_permissions -p /no/uio/integration uio_ad_microservice "^q_ad_ms_.*" "^q_ad_ms_.*" "^(ex_messages|q_ad_ms_.*)$"

  • -
-
- -
-

Køer

-

Køer defineres som durable ved hjelp av webgrensesnittet.

-

"Alle køer (både forhåndsdefinerte og de som defineres av konsument) må ha navn som starter med q_. Køen vil ha navn som uttryker mottakeren som bruker den."

-

F.eks. q_ad_ms_all vil være et passende navn for køen som brukes av AD-microservice mottakeren.

-
- -
-

Exchange

-

"Avsendere vil vanligvis sende meldinger til exchange ex_messages."

-

Det er flere typer exchange, men vi vil bruke kun topic exchange.

-
-
- -
-
-

Utvikling

-
-
    -
  • Routing keys i topic exchange

  • -
  • Bindinger

  • -
  • Protokoller og porter

  • -
  • Eksempler

  • -
-
- -
-

Routing keys i topic exchange

-
-

Routing key settes av sender som en del av meldingen og blir inspisert av brokeren dersom meldingen sendes til en topic exchange.

-

Strukturen til en topic / message routing key er:

-

<kilde>.<type>.<objekt>.<hendelse>

-

F.eks.:

-

cerebrum.event.person.delete

-
- -
-

Bindinger

-

For at en melding sendt til en topic exchange skal havne i en bestemt kø, må køen være bundet (bound) til exchange.

-

I topic exchange brukes routing key (topic) til å avgjøre hvilke av meldingene som blir sendt vil havne i køen som er bundet.

-

Dersom vi binder køen q_ad_ms_all til topic exchange ex_messages med binding key cerebrum.event.account.* vil alle meldinger som blir sendt til ex_messages med topic som starter med cerebrum.event.account. havne i q_ad_ms_all.

-

En kø kan bli bundet med én eller flere nøkler til en topic exchange.

-
- -
-

Protokoller og porter

-
-

"AMQP 0.9.1 prioritert siden det er protokollen som mapper best mot RabbitMQs funksjonalitet. Vi har også noe erfaring med bruk av denne."

-

RabbitMQ lytter for AMQP0.9.1 på SSL port 5671.

-
-

Andre protokoller og tjenester for RabbitMQ:

-
    -
  • STOMP - 61614 (SSL)
  • -
  • RabbitMQ Management (webgrensesnitt) - 15671 (SSL)
  • -
-
- -
-

Eksempler

-
-
-                
-                    $ pip install pika
-                
-            
-

Python:

-

"Well, we'll not risk another frontal assault. That rabbit's dynamite...."

-
- -
- -
-
-

Dokumentasjon og lenker

-
-

- RabbitMQ: -

- -
-
-

Dokumentasjon og lenker

-

- UiO: -

- -

- Bøker: -

-
    -
  • -

    - - RabbitMQ in action - Alvaro Videla / Jason J.W. Williams - 2012 - Manning - -

  • -
  • -

    - - Mastering RabbitMQ - Ayanoglu / Aytas / Nahum - 2015 - PACKT Publishing - -

  • -
-
- -
-

Q&A

-
- -
-
- - - - - - - - - - - -- cgit v1.3