Meldingskø ved INT

Utviklerforum 14.12.2017


Kai Vaade (KIA), Simeon Simeonov (INT)

Agenda


  • Administrasjon
  • Roller og entiteter
  • Flyt
  • Rettigheter
  • Q & A

Generelt


Vi bruker RabbitMQ med AMQP 0.9.1 til å utveksle / behandle meldinger (JSON, SCIM)

Bruk av message-broker startet i 2015. I produksjon siden høsten 2017.

Driftes av KIA.

Administrasjon

Cerebrum har brukt MQ et års tid på egen server satt opp av Seksjon for integrasjon og elektroniske identiteter (USITINT).

Nå er driften av tjenesten flyttet fra prosjektet og inn i linja, Gruppe for drift av katalog-, integrasjon- og autentiseringstjenester (KIA).

Administrasjon (forts...)

Vi har softlaunchet meldingskø-tjenesten i høst. Tjenesten er ikke "offisielt" lansert, kjører kun våre egne ting (Cerebrum/SAP) foreløpig.

Antakelig gjør vi tjenesten kjent samtidig som et annet delprosjekt (API Manager) i UiO INTARK lanseres i nær fremtid.

Administrasjon (forts...)

Foreløpig så har vi ikke så veldig mye erfaring med tjenesten i linja.

Vi vet heller ikke så mye om behovet; dvs hvor mange som kommer til å bruke tjenesten.

Administrasjon (forts...)

Hvordan kontakte oss:

https://www.usit.uio.no/om/organisasjon/iti/td/kia/dokumentasjon/meldingsko/

Tilgang til grensesnittet: https://mq.uio.no

Roller og entiteter

    Roller:

  • Administrator / Manager
  • Consumer / Konsument
  • Publisher / Publisist :)
  • Entiteter:

  • vhost
  • Exchange (direct, fanout, topic, headers)
  • Kø (transient, durable)
  • Binding

Flyt


Rettigheter

RabbitMQ implementerer 2 rettighetsnivåer: per vhost og per entitet

RabbitMQ (AMQP) definerer 3 typer operasjoner:

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

  • write - skrive melding til en entitet

  • read - lese melding fra entitet

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_.*)$"

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

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:

  • RabbitMQ Management (webgrensesnitt) - 15671 (SSL)

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