diff options
Diffstat (limited to 'reveal.js/rabbitmq.html')
| -rw-r--r-- | reveal.js/rabbitmq.html | 528 |
1 files changed, 264 insertions, 264 deletions
diff --git a/reveal.js/rabbitmq.html b/reveal.js/rabbitmq.html index ed1cbfd..6d1ba7a 100644 --- a/reveal.js/rabbitmq.html +++ b/reveal.js/rabbitmq.html | |||
| @@ -1,311 +1,311 @@ | |||
| 1 | <!doctype html> | 1 | <!doctype html> |
| 2 | <html lang="en"> | 2 | <html lang="en"> |
| 3 | <head> | 3 | <head> |
| 4 | <meta charset="utf-8"> | 4 | <meta charset="utf-8"> |
| 5 | <title>RabbitMQ - Intern opplæring</title> | 5 | <title>RabbitMQ - Intern opplæring</title> |
| 6 | <meta name="author" content="Simeon Simeonov"> | 6 | <meta name="author" content="Simeon Simeonov"> |
| 7 | <meta name="apple-mobile-web-app-capable" content="yes"> | 7 | <meta name="apple-mobile-web-app-capable" content="yes"> |
| 8 | <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | 8 | <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> |
| 9 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 9 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 10 | 10 | ||
| 11 | <link rel="stylesheet" href="dist/reset.css"> | 11 | <link rel="stylesheet" href="dist/reset.css"> |
| 12 | <link rel="stylesheet" href="dist/reveal.css"> | 12 | <link rel="stylesheet" href="dist/reveal.css"> |
| 13 | 13 | ||
| 14 | <link rel="stylesheet" href="dist/theme/serif.css" id="theme"> | 14 | <link rel="stylesheet" href="dist/theme/serif.css" id="theme"> |
| 15 | 15 | ||
| 16 | <!-- Theme used for syntax highlighting of code --> | 16 | <!-- Theme used for syntax highlighting of code --> |
| 17 | <link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme"> | 17 | <link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme"> |
| 18 | </head> | 18 | </head> |
| 19 | <body> | 19 | <body> |
| 20 | <div class="reveal"> | 20 | <div class="reveal"> |
| 21 | 21 | ||
| 22 | <!-- Any section element inside of this container is displayed as a slide --> | 22 | <!-- Any section element inside of this container is displayed as a slide --> |
| 23 | <div class="slides"> | 23 | <div class="slides"> |
| 24 | <section> | 24 | <section> |
| 25 | <h1>RabbitMQ</h1> | 25 | <h1>RabbitMQ</h1> |
| 26 | <h3>Intern opplæring</h3> | 26 | <h3>Intern opplæring</h3> |
| 27 | </br> | 27 | </br> |
| 28 | <p> | 28 | <p> |
| 29 | <small>Simeon Simeonov</small> | 29 | <small>Simeon Simeonov</small> |
| 30 | </p> | 30 | </p> |
| 31 | </section> | 31 | </section> |
| 32 | 32 | ||
| 33 | <section> | 33 | <section> |
| 34 | <section id="fragments"> | 34 | <section id="fragments"> |
| 35 | <h2>Agenda</h2> | 35 | <h2>Agenda</h2> |
| 36 | </br> | 36 | </br> |
| 37 | <ul> | 37 | <ul> |
| 38 | <span class="fragment"><li>Installasjon</li></span> | 38 | <span class="fragment"><li>Installasjon</li></span> |
| 39 | <span class="fragment"><li>Administrasjon</li></span> | 39 | <span class="fragment"><li>Administrasjon</li></span> |
| 40 | <span class="fragment"><li>Utvikling</li></span> | 40 | <span class="fragment"><li>Utvikling</li></span> |
| 41 | <span class="fragment"><li>Diverse + Q&A</li></span> | 41 | <span class="fragment"><li>Diverse + Q&A</li></span> |
| 42 | </ul> | 42 | </ul> |
| 43 | </section> | 43 | </section> |
| 44 | </section> | 44 | </section> |
| 45 | 45 | ||
| 46 | <section> | 46 | <section> |
| 47 | <section> | 47 | <section> |
| 48 | <h2>Installasjon og oppsett</h2> | 48 | <h2>Installasjon og oppsett</h2> |
| 49 | </br> | 49 | </br> |
| 50 | <ul> | 50 | <ul> |
| 51 | <li><p>Skaffe seg maskin og SSL sertifikat(er)</p></li> | 51 | <li><p>Skaffe seg maskin og SSL sertifikat(er)</p></li> |
| 52 | <li><p>Bruke Ansible</p></li> | 52 | <li><p>Bruke Ansible</p></li> |
| 53 | <li><p>Opprette administrator-bruker og slette guest-brukeren</p></li> | 53 | <li><p>Opprette administrator-bruker og slette guest-brukeren</p></li> |
| 54 | <li><p>Sette rettigheter og opprette entiteter</p></li> | 54 | <li><p>Sette rettigheter og opprette entiteter</p></li> |
| 55 | </ul> | 55 | </ul> |
| 56 | </section> | 56 | </section> |
| 57 | <section> | 57 | <section> |
| 58 | <h2>Ansible</h2> | 58 | <h2>Ansible</h2> |
| 59 | </br> | 59 | </br> |
| 60 | <p>Vi bruker repo <em>UAIT/int-ansible-hosts</em></p> | 60 | <p>Vi bruker repo <em>UAIT/int-ansible-hosts</em></p> |
| 61 | <p>Etter å ha installert Ansible på lokalmaskina gjør vi følgende:</p> | 61 | <p>Etter å ha installert Ansible på lokalmaskina gjør vi følgende:</p> |
| 62 | <ul> | 62 | <ul> |
| 63 | <li><p><small><em>git clone ssh://git@bitbucket.usit.uio.no:7999/uait/int-ansible-hosts.git</em></small></p></li> | 63 | <li><p><small><em>git clone ssh://git@bitbucket.usit.uio.no:7999/uait/int-ansible-hosts.git</em></small></p></li> |
| 64 | <li><p><small><em>cd int-ansible-hosts</em></small></p></li> | 64 | <li><p><small><em>cd int-ansible-hosts</em></small></p></li> |
| 65 | <li><p><small><em>ansible-playbook --ask-become-pass -v --extra-vars '{"hosts": "mq-hostname"}' rabbitmq_playbook.yml</em></small></p></li> | 65 | <li><p><small><em>ansible-playbook --ask-become-pass -v --extra-vars '{"hosts": "mq-hostname"}' rabbitmq_playbook.yml</em></small></p></li> |
| 66 | </ul> | 66 | </ul> |
| 67 | <p>RabbitMQ skal nå være installert og tilgjengelig på <em>https://mq-hostname</em></p> | 67 | <p>RabbitMQ skal nå være installert og tilgjengelig på <em>https://mq-hostname</em></p> |
| 68 | </section> | 68 | </section> |
| 69 | 69 | ||
| 70 | <section> | 70 | <section> |
| 71 | <h2>Administrator-bruker</h2> | 71 | <h2>Administrator-bruker</h2> |
| 72 | </br> | 72 | </br> |
| 73 | <p>Brukeren <em>guest</em> med passord <em>guest</em> vil eksistere etter at Ansible har kjørt</p> | 73 | <p>Brukeren <em>guest</em> med passord <em>guest</em> vil eksistere etter at Ansible har kjørt</p> |
| 74 | <p>I tillegg til webgrensesnittet, kan en bruke <em>rabbitmqctl</em></p> | 74 | <p>I tillegg til webgrensesnittet, kan en bruke <em>rabbitmqctl</em></p> |
| 75 | <ul> | 75 | <ul> |
| 76 | <li><p><small><em>rabbitmqctl list_users</em> (Lister alle eksisterende RabbitMQ-brukere)</small></p></li> | 76 | <li><p><small><em>rabbitmqctl list_users</em> (Lister alle eksisterende RabbitMQ-brukere)</small></p></li> |
| 77 | <li><p><small><em>rabbitmqctl add_user rmq_admin <passord></em> (Legger til dedikert admin bruker <em>rmq_admin</em>)</small></p></li> | 77 | <li><p><small><em>rabbitmqctl add_user rmq_admin <passord></em> (Legger til dedikert admin bruker <em>rmq_admin</em>)</small></p></li> |
| 78 | <li><p><small><em>rabbitmqctl set_user_tags rmq_admin administrator</em> (Gir administrator rolle til <em>rmq_admin</em>)</small></p></li> | 78 | <li><p><small><em>rabbitmqctl set_user_tags rmq_admin administrator</em> (Gir administrator rolle til <em>rmq_admin</em>)</small></p></li> |
| 79 | <li><p><small><em>rabbitmqctl delete_user guest</em> (Sletter brukeren <em>guest</em>)</small></p></li> | 79 | <li><p><small><em>rabbitmqctl delete_user guest</em> (Sletter brukeren <em>guest</em>)</small></p></li> |
| 80 | </ul> | 80 | </ul> |
| 81 | </section> | 81 | </section> |
| 82 | 82 | ||
| 83 | <section> | 83 | <section> |
| 84 | <h2><em>vhost</em></h2> | 84 | <h2><em>vhost</em></h2> |
| 85 | </br> | 85 | </br> |
| 86 | <p><em>vhost</em> fungerer som en beholder (container) for RabbitMQ/AMQP objekter. Nok igjen kan en velge mellom webgrensesnitt og <em>rabbitmqctl</em></p> | 86 | <p><em>vhost</em> fungerer som en beholder (container) for RabbitMQ/AMQP objekter. Nok igjen kan en velge mellom webgrensesnitt og <em>rabbitmqctl</em></p> |
| 87 | <ul> | 87 | <ul> |
| 88 | <li><p><small><em>rabbitmqctl list_vhosts</em> (Lister alle eksisterende vhosts)</small></p></li> | 88 | <li><p><small><em>rabbitmqctl list_vhosts</em> (Lister alle eksisterende vhosts)</small></p></li> |
| 89 | <li><p><small><em>rabbitmqctl add_vhost /no/uio/integration</em> (Oppretter <em>vhost</em> med navn <em>/no/uio/integration</em>)</small></p></li> | 89 | <li><p><small><em>rabbitmqctl add_vhost /no/uio/integration</em> (Oppretter <em>vhost</em> med navn <em>/no/uio/integration</em>)</small></p></li> |
| 90 | </ul> | 90 | </ul> |
| 91 | </section> | 91 | </section> |
| 92 | 92 | ||
| 93 | <section> | 93 | <section> |
| 94 | <h2>Rettigheter</h2> | 94 | <h2>Rettigheter</h2> |
| 95 | <p>RabbitMQ implementerer 2 rettighetsnivåer(*):</p> | 95 | <p>RabbitMQ implementerer 2 rettighetsnivåer(*):</p> |
| 96 | <ul> | 96 | <ul> |
| 97 | <li>Per <em>vhost</em></li> | 97 | <li>Per <em>vhost</em></li> |
| 98 | <li>Per entitet</li> | 98 | <li>Per entitet</li> |
| 99 | </ul> | 99 | </ul> |
| 100 | <p>RabbitMQ definerer 3 typer operasjoner:</p> | 100 | <p>RabbitMQ definerer 3 typer operasjoner:</p> |
| 101 | <ul> | 101 | <ul> |
| 102 | <li><p><em>configure</em> - opprette / slette entiteter eller endre deres oppførsel</p></li> | 102 | <li><p><em>configure</em> - opprette / slette entiteter eller endre deres oppførsel</p></li> |
| 103 | <li><p><em>write</em> - skrive melding til en entitet</p></li> | 103 | <li><p><em>write</em> - skrive melding til en entitet</p></li> |
| 104 | <li><p><em>read</em> - lese melding fra entitet</p></li> | 104 | <li><p><em>read</em> - lese melding fra entitet</p></li> |
| 105 | </ul> | 105 | </ul> |
| 106 | <p><small>(*) - <em>/etc/rabbitmq/rabbitmq.config</em> gir flere muligheter</small></p> | 106 | <p><small>(*) - <em>/etc/rabbitmq/rabbitmq.config</em> gir flere muligheter</small></p> |
| 107 | </section> | 107 | </section> |
| 108 | 108 | ||
| 109 | <section> | 109 | <section> |
| 110 | <h2>Rettigheter og brukere</h2> | 110 | <h2>Rettigheter og brukere</h2> |
| 111 | <p>RabbitMQ bruker <em>regular expressions</em> til å definere rettigheter</p> | 111 | <p>RabbitMQ bruker <em>regular expressions</em> til å definere rettigheter</p> |
| 112 | <ul> | 112 | <ul> |
| 113 | <li><p><small><em>rabbitmqctl add_user cerebrum <passord></em></small></p></li> | 113 | <li><p><small><em>rabbitmqctl add_user cerebrum <passord></em></small></p></li> |
| 114 | <li><p><small><em>rabbitmqctl add_user uio_ad_microservice <passord></em></small></p></li> | 114 | <li><p><small><em>rabbitmqctl add_user uio_ad_microservice <passord></em></small></p></li> |
| 115 | <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration cerebrum "^$" "^ex_.*" "^$"</em></small></p></li> | 115 | <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration cerebrum "^$" "^ex_.*" "^$"</em></small></p></li> |
| 116 | <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration uio_ad_microservice "^q_ad_ms_.*" "^q_ad_ms_.*" "^(ex_messages|q_ad_ms_.*)$"</em></small></p></li> | 116 | <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration uio_ad_microservice "^q_ad_ms_.*" "^q_ad_ms_.*" "^(ex_messages|q_ad_ms_.*)$"</em></small></p></li> |
| 117 | </ul> | 117 | </ul> |
| 118 | </section> | 118 | </section> |
| 119 | 119 | ||
| 120 | <section> | 120 | <section> |
| 121 | <h2>Køer</h2> | 121 | <h2>Køer</h2> |
| 122 | <p>Køer defineres som <em>durable</em> ved hjelp av webgrensesnittet.</p> | 122 | <p>Køer defineres som <em>durable</em> ved hjelp av webgrensesnittet.</p> |
| 123 | <p>"Alle køer (både forhåndsdefinerte og de som defineres av konsument) må ha navn som starter med <em>q_</em>. Køen vil ha navn som uttryker mottakeren som bruker den."</p> | 123 | <p>"Alle køer (både forhåndsdefinerte og de som defineres av konsument) må ha navn som starter med <em>q_</em>. Køen vil ha navn som uttryker mottakeren som bruker den."</p> |
| 124 | <p>F.eks. <em>q_ad_ms_all</em> vil være et passende navn for køen som brukes av AD-microservice mottakeren.</p> | 124 | <p>F.eks. <em>q_ad_ms_all</em> vil være et passende navn for køen som brukes av AD-microservice mottakeren.</p> |
| 125 | </section> | 125 | </section> |
| 126 | 126 | ||
| 127 | <section> | 127 | <section> |
| 128 | <h2><em>Exchange</em></h2> | 128 | <h2><em>Exchange</em></h2> |
| 129 | <p>"Avsendere vil vanligvis sende meldinger til exchange <em>ex_messages</em>."</p> | 129 | <p>"Avsendere vil vanligvis sende meldinger til exchange <em>ex_messages</em>."</p> |
| 130 | <p>Det er flere typer <em>exchange</em>, men vi vil bruke kun <em>topic exchange</em>.</p> | 130 | <p>Det er flere typer <em>exchange</em>, men vi vil bruke kun <em>topic exchange</em>.</p> |
| 131 | </section> | 131 | </section> |
| 132 | </section> | 132 | </section> |
| 133 | 133 | ||
| 134 | <section> | 134 | <section> |
| 135 | <section> | 135 | <section> |
| 136 | <h2>Utvikling</h2> | 136 | <h2>Utvikling</h2> |
| 137 | </br> | 137 | </br> |
| 138 | <ul> | 138 | <ul> |
| 139 | <li><p><em>Routing keys</em> i <em>topic exchange</em></p></li> | 139 | <li><p><em>Routing keys</em> i <em>topic exchange</em></p></li> |
| 140 | <li><p>Bindinger</p></li> | 140 | <li><p>Bindinger</p></li> |
| 141 | <li><p>Protokoller og porter</p></li> | 141 | <li><p>Protokoller og porter</p></li> |
| 142 | <li><p>Eksempler</p></li> | 142 | <li><p>Eksempler</p></li> |
| 143 | </ul> | 143 | </ul> |
| 144 | </section> | 144 | </section> |
| 145 | 145 | ||
| 146 | <section> | 146 | <section> |
| 147 | <h2><em>Routing keys</em> i <em>topic exchange</em></h2> | 147 | <h2><em>Routing keys</em> i <em>topic exchange</em></h2> |
| 148 | </br> | 148 | </br> |
| 149 | <p><em>Routing key</em> settes av sender som en del av meldingen og blir inspisert av brokeren dersom meldingen sendes til en <em>topic exchange</em>.</p> | 149 | <p><em>Routing key</em> settes av sender som en del av meldingen og blir inspisert av brokeren dersom meldingen sendes til en <em>topic exchange</em>.</p> |
| 150 | <p>Strukturen til en topic / message routing key er:</p> | 150 | <p>Strukturen til en topic / message routing key er:</p> |
| 151 | <p><small><kilde>.<type>.<objekt>.<hendelse></small></p> | 151 | <p><small><kilde>.<type>.<objekt>.<hendelse></small></p> |
| 152 | <p>F.eks.:</p> | 152 | <p>F.eks.:</p> |
| 153 | <p><small>cerebrum.event.person.delete</small></p> | 153 | <p><small>cerebrum.event.person.delete</small></p> |
| 154 | </section> | 154 | </section> |
| 155 | 155 | ||
| 156 | <section> | 156 | <section> |
| 157 | <h2>Bindinger</h2> | 157 | <h2>Bindinger</h2> |
| 158 | <p>For at en melding sendt til en <em>topic exchange</em> skal havne i en bestemt kø, må køen være bundet (<em>bound</em>) til <em>exchange</em>.</p> | 158 | <p>For at en melding sendt til en <em>topic exchange</em> skal havne i en bestemt kø, må køen være bundet (<em>bound</em>) til <em>exchange</em>.</p> |
| 159 | <p>I <em>topic exchange</em> brukes <em>routing key</em> (<em>topic</em>) til å avgjøre hvilke av meldingene som blir sendt vil havne i køen som er bundet.</p> | 159 | <p>I <em>topic exchange</em> brukes <em>routing key</em> (<em>topic</em>) til å avgjøre hvilke av meldingene som blir sendt vil havne i køen som er bundet.</p> |
| 160 | <p>Dersom vi binder køen <em>q_ad_ms_all</em> til <em>topic exchange</em> <em>ex_messages</em> med <em>binding key</em> <em>cerebrum.event.account.*</em> vil alle meldinger som blir sendt til <em>ex_messages</em> med topic som starter med <em>cerebrum.event.account.</em> havne i <em>q_ad_ms_all</em>.</p> | 160 | <p>Dersom vi binder køen <em>q_ad_ms_all</em> til <em>topic exchange</em> <em>ex_messages</em> med <em>binding key</em> <em>cerebrum.event.account.*</em> vil alle meldinger som blir sendt til <em>ex_messages</em> med topic som starter med <em>cerebrum.event.account.</em> havne i <em>q_ad_ms_all</em>.</p> |
| 161 | <p>En kø kan bli bundet med én eller flere nøkler til en <em>topic exchange</em>.</p> | 161 | <p>En kø kan bli bundet med én eller flere nøkler til en <em>topic exchange</em>.</p> |
| 162 | </section> | 162 | </section> |
| 163 | 163 | ||
| 164 | <section> | 164 | <section> |
| 165 | <h2>Protokoller og porter</h2> | 165 | <h2>Protokoller og porter</h2> |
| 166 | </br> | 166 | </br> |
| 167 | <p>"AMQP 0.9.1 prioritert siden det er protokollen som mapper best mot RabbitMQs funksjonalitet. Vi har også noe erfaring med bruk av denne."</p> | 167 | <p>"AMQP 0.9.1 prioritert siden det er protokollen som mapper best mot RabbitMQs funksjonalitet. Vi har også noe erfaring med bruk av denne."</p> |
| 168 | <p>RabbitMQ lytter for AMQP0.9.1 på SSL port <em>5671</em>.</p> | 168 | <p>RabbitMQ lytter for AMQP0.9.1 på SSL port <em>5671</em>.</p> |
| 169 | </br> | 169 | </br> |
| 170 | <p>Andre protokoller og tjenester for RabbitMQ:</p> | 170 | <p>Andre protokoller og tjenester for RabbitMQ:</p> |
| 171 | <ul> | 171 | <ul> |
| 172 | <li>STOMP - 61614 (SSL)</li> | 172 | <li>STOMP - 61614 (SSL)</li> |
| 173 | <li>RabbitMQ Management (webgrensesnitt) - 15671 (SSL)</li> | 173 | <li>RabbitMQ Management (webgrensesnitt) - 15671 (SSL)</li> |
| 174 | </ul> | 174 | </ul> |
| 175 | </section> | 175 | </section> |
| 176 | 176 | ||
| 177 | <section> | 177 | <section> |
| 178 | <h2>Eksempler</h2> | 178 | <h2>Eksempler</h2> |
| 179 | </br> | 179 | </br> |
| 180 | <pre> | 180 | <pre> |
| 181 | <code class="hljs" data-trim contenteditable> | 181 | <code class="hljs" data-trim contenteditable> |
| 182 | $ pip install pika | 182 | $ pip install pika |
| 183 | </code> | 183 | </code> |
| 184 | </pre> | 184 | </pre> |
| 185 | <p>Python:</p> | 185 | <p>Python:</p> |
| 186 | <p>"Well, we'll not risk another frontal assault. That rabbit's dynamite...."</p> | 186 | <p>"Well, we'll not risk another frontal assault. That rabbit's dynamite...."</p> |
| 187 | </section> | 187 | </section> |
| 188 | 188 | ||
| 189 | </section> | 189 | </section> |
| 190 | 190 | ||
| 191 | <section> | 191 | <section> |
| 192 | <section> | 192 | <section> |
| 193 | <h2>Dokumentasjon og lenker</h2> | 193 | <h2>Dokumentasjon og lenker</h2> |
| 194 | </br> | 194 | </br> |
| 195 | <p> | 195 | <p> |
| 196 | RabbitMQ: | 196 | RabbitMQ: |
| 197 | </p> | 197 | </p> |
| 198 | <ul> | 198 | <ul> |
| 199 | <li> | 199 | <li> |
| 200 | <p> | 200 | <p> |
| 201 | <small> | 201 | <small> |
| 202 | <a href="http://www.rabbitmq.com">http://www.rabbitmq.com</a> - RabbitMQ sin offisielle side | 202 | <a href="http://www.rabbitmq.com">http://www.rabbitmq.com</a> - RabbitMQ sin offisielle side |
| 203 | </small> | 203 | </small> |
| 204 | </li> | 204 | </li> |
| 205 | <li> | 205 | <li> |
| 206 | <p> | 206 | <p> |
| 207 | <small> | 207 | <small> |
| 208 | <a href="http://www.rabbitmq.com/configure.html">http://www.rabbitmq.com/configure.html</a> - Generell konfigurasjon av RabbitMQ | 208 | <a href="http://www.rabbitmq.com/configure.html">http://www.rabbitmq.com/configure.html</a> - Generell konfigurasjon av RabbitMQ |
| 209 | </small> | 209 | </small> |
| 210 | </li> | 210 | </li> |
| 211 | <li> | 211 | <li> |
| 212 | <p> | 212 | <p> |
| 213 | <small> | 213 | <small> |
| 214 | <a href="http://www.rabbitmq.com/management.html">http://www.rabbitmq.com/management.html</a> - Bruk av rabbitmq_management plugin i RabbitMQ | 214 | <a href="http://www.rabbitmq.com/management.html">http://www.rabbitmq.com/management.html</a> - Bruk av rabbitmq_management plugin i RabbitMQ |
| 215 | </small> | 215 | </small> |
| 216 | </li> | 216 | </li> |
| 217 | <li> | 217 | <li> |
| 218 | <p> | 218 | <p> |
| 219 | <small> | 219 | <small> |
| 220 | <a href="http://www.rabbitmq.com/access-control.html">http://www.rabbitmq.com/access-control.html</a> - Tilgangskontroll i RabbitMQ | 220 | <a href="http://www.rabbitmq.com/access-control.html">http://www.rabbitmq.com/access-control.html</a> - Tilgangskontroll i RabbitMQ |
| 221 | </small> | 221 | </small> |
| 222 | </li> | 222 | </li> |
| 223 | <li> | 223 | <li> |
| 224 | <p> | 224 | <p> |
| 225 | <small> | 225 | <small> |
| 226 | <a href="http://www.rabbitmq.com/man/rabbitmqctl.1.man.html">http://www.rabbitmq.com/man/rabbitmqctl.1.man.html</a> - rabbitmqctl manual side | 226 | <a href="http://www.rabbitmq.com/man/rabbitmqctl.1.man.html">http://www.rabbitmq.com/man/rabbitmqctl.1.man.html</a> - rabbitmqctl manual side |
| 227 | </small> | 227 | </small> |
| 228 | </li> | 228 | </li> |
| 229 | <li> | 229 | <li> |
| 230 | <p> | 230 | <p> |
| 231 | <small> | 231 | <small> |
| 232 | <a href="http://www.rabbitmq.com/tutorials/amqp-concepts.html">http://www.rabbitmq.com/tutorials/amqp-concepts.html</a> - Generelt om AMQP og forskjellige exchanges | 232 | <a href="http://www.rabbitmq.com/tutorials/amqp-concepts.html">http://www.rabbitmq.com/tutorials/amqp-concepts.html</a> - Generelt om AMQP og forskjellige exchanges |
| 233 | </small> | 233 | </small> |
| 234 | </li> | 234 | </li> |
| 235 | </ul> | 235 | </ul> |
| 236 | </section> | 236 | </section> |
| 237 | <section> | 237 | <section> |
| 238 | <h2>Dokumentasjon og lenker</h2> | 238 | <h2>Dokumentasjon og lenker</h2> |
| 239 | <p> | 239 | <p> |
| 240 | UiO: | 240 | UiO: |
| 241 | </p> | 241 | </p> |
| 242 | <ul> | 242 | <ul> |
| 243 | <li> | 243 | <li> |
| 244 | <p> | 244 | <p> |
| 245 | <small> | 245 | <small> |
| 246 | <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/dokumentasjon/tools/rabbitmq.html">Installasjon og oppsett av RabbitMQ for Cerebrum utviklere</a> | 246 | <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/dokumentasjon/tools/rabbitmq.html">Installasjon og oppsett av RabbitMQ for Cerebrum utviklere</a> |
| 247 | </small> | 247 | </small> |
| 248 | </li> | 248 | </li> |
| 249 | <li> | 249 | <li> |
| 250 | <p> | 250 | <p> |
| 251 | <small> | 251 | <small> |
| 252 | <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/aktiviteter/office365-uia/broker/rabbitmq.html">Oppsett av RabbitMQ for Office365 integrasjon mot UiA</a> | 252 | <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/aktiviteter/office365-uia/broker/rabbitmq.html">Oppsett av RabbitMQ for Office365 integrasjon mot UiA</a> |
| 253 | </small> | 253 | </small> |
| 254 | </li> | 254 | </li> |
| 255 | <li> | 255 | <li> |
| 256 | <p> | 256 | <p> |
| 257 | <small> | 257 | <small> |
| 258 | <a href="https://www.usit.uio.no/om/organisasjon/uav/usitint/interndokumentasjon/integrasjon/broker/utredning-meldingsflyt.html">Utredning: Meldingsflyt, kø-struktur og navngiving</a> (intern) | 258 | <a href="https://www.usit.uio.no/om/organisasjon/uav/usitint/interndokumentasjon/integrasjon/broker/utredning-meldingsflyt.html">Utredning: Meldingsflyt, kø-struktur og navngiving</a> (intern) |
| 259 | </small> | 259 | </small> |
| 260 | </li> | 260 | </li> |
| 261 | </ul> | 261 | </ul> |
| 262 | <p> | 262 | <p> |
| 263 | Bøker: | 263 | Bøker: |
| 264 | </p> | 264 | </p> |
| 265 | <ul> | 265 | <ul> |
| 266 | <li> | 266 | <li> |
| 267 | <p> | 267 | <p> |
| 268 | <small> | 268 | <small> |
| 269 | RabbitMQ in action - Alvaro Videla / Jason J.W. Williams - 2012 - Manning | 269 | RabbitMQ in action - Alvaro Videla / Jason J.W. Williams - 2012 - Manning |
| 270 | </small> | 270 | </small> |
| 271 | </li> | 271 | </li> |
| 272 | <li> | 272 | <li> |
| 273 | <p> | 273 | <p> |
| 274 | <small> | 274 | <small> |
| 275 | Mastering RabbitMQ - Ayanoglu / Aytas / Nahum - 2015 - PACKT Publishing | 275 | Mastering RabbitMQ - Ayanoglu / Aytas / Nahum - 2015 - PACKT Publishing |
| 276 | </small> | 276 | </small> |
| 277 | </li> | 277 | </li> |
| 278 | </section> | 278 | </section> |
| 279 | </section> | 279 | </section> |
| 280 | |||
| 281 | <section> | ||
| 282 | <h1>Q&A</h1> | ||
| 283 | </section> | ||
| 284 | |||
| 285 | </div> | ||
| 286 | </div> | ||
| 280 | 287 | ||
| 281 | <section> | 288 | <script src="dist/reveal.js"></script> |
| 282 | <h1>Q&A</h1> | 289 | <script src="plugin/zoom/zoom.js"></script> |
| 283 | </section> | 290 | <script src="plugin/notes/notes.js"></script> |
| 291 | <script src="plugin/search/search.js"></script> | ||
| 292 | <script src="plugin/markdown/markdown.js"></script> | ||
| 293 | <script src="plugin/highlight/highlight.js"></script> | ||
| 294 | <script> | ||
| 284 | 295 | ||
| 285 | </div> | 296 | // Also available as an ES module, see: |
| 286 | </div> | 297 | // https://revealjs.com/initialization/ |
| 287 | 298 | Reveal.initialize({ | |
| 288 | <script src="dist/reveal.js"></script> | 299 | controls: true, |
| 289 | <script src="plugin/zoom/zoom.js"></script> | 300 | progress: true, |
| 290 | <script src="plugin/notes/notes.js"></script> | 301 | center: true, |
| 291 | <script src="plugin/search/search.js"></script> | 302 | hash: true, |
| 292 | <script src="plugin/markdown/markdown.js"></script> | ||
| 293 | <script src="plugin/highlight/highlight.js"></script> | ||
| 294 | <script> | ||
| 295 | 303 | ||
| 296 | // Also available as an ES module, see: | 304 | // Learn about plugins: https://revealjs.com/plugins/ |
| 297 | // https://revealjs.netlify.app/initialization/ | 305 | plugins: [ RevealZoom, RevealNotes, RevealSearch, RevealMarkdown, RevealHighlight ] |
| 298 | Reveal.initialize({ | 306 | }); |
| 299 | controls: true, | ||
| 300 | progress: true, | ||
| 301 | center: true, | ||
| 302 | hash: true, | ||
| 303 | 307 | ||
| 304 | // Learn about plugins: https://revealjs.netlify.app/plugins/ | 308 | </script> |
| 305 | plugins: [ RevealZoom, RevealNotes, RevealSearch, RevealMarkdown, RevealHighlight ] | ||
| 306 | }); | ||
| 307 | |||
| 308 | </script> | ||
| 309 | 309 | ||
| 310 | </body> | 310 | </body> |
| 311 | </html> | 311 | </html> |
