summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimeon Simeonov2016-05-31 11:12:30 +0200
committerSimeon Simeonov2016-05-31 11:12:30 +0200
commit93c7f6475d8f89f3e8e742fff63f90a9bcb1943d (patch)
treee9d9310712345ab35bc97db8fcf9eb107c868fcc
Initial commit
-rw-r--r--reveal.js/rabbitmq.html290
1 files changed, 290 insertions, 0 deletions
diff --git a/reveal.js/rabbitmq.html b/reveal.js/rabbitmq.html
new file mode 100644
index 0000000..9b2621c
--- /dev/null
+++ b/reveal.js/rabbitmq.html
@@ -0,0 +1,290 @@
1<!doctype html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <title>RabbitMQ - Intern opplæring</title>
6 <meta name="author" content="Simeon Simeonov">
7 <meta name="apple-mobile-web-app-capable" content="yes">
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, maximum-scale=1.0, user-scalable=no">
10 <link rel="stylesheet" href="css/reveal.css">
11 <link rel="stylesheet" href="css/theme/black.css" id="theme">
12
13 <!-- Theme used for syntax highlighting of code -->
14 <link rel="stylesheet" href="lib/css/zenburn.css">
15 </head>
16 <body>
17 <div class="reveal">
18
19 <!-- Any section element inside of this container is displayed as a slide -->
20 <div class="slides">
21 <section>
22 <h1>RabbitMQ</h1>
23 <h3>Intern opplæring</h3>
24 </br>
25 <p>
26 <small>Simeon Simeonov</small>
27 </p>
28 </section>
29
30 <section>
31 <section id="fragments">
32 <h2>Agenda</h2>
33 </br>
34 <ul>
35 <span class="fragment"><li>Installasjon</li></span>
36 <span class="fragment"><li>Administrasjon</li></span>
37 <span class="fragment"><li>Utvikling</li></span>
38 </ul>
39 </section>
40 </section>
41
42 <section>
43 <section>
44 <h2>Installasjon og oppsett</h2>
45 </br>
46 <ul>
47 <li><p>Skaffe seg maskin og SSL sertifikat(er)</p></li>
48 <li><p>Bruke Ansible</p></li>
49 <li><p>Opprette administrator-bruker og slette guest-brukeren</p></li>
50 <li><p>Sette rettigheter og opprette entiteter</p></li>
51 </ul>
52 </section>
53 <section>
54 <h2>Ansible</h2>
55 </br>
56 <p>Vi bruker repo <em>UAIT/int-ansible-hosts</em></p>
57 <p>Etter å ha installert Ansible på lokalmaskina gjør vi følgende:</p>
58 <ul>
59 <li><p><small><em>git clone ssh://git@bitbucket.usit.uio.no:7999/uait/int-ansible-hosts.git</em></small></p></li>
60 <li><p><small><em>cd int-ansible-hosts</em></small></p></li>
61 <li><p><small><em>ansible-playbook --ask-become-pass -v --extra-vars '{"hosts": "mq-hostname"}' rabbitmq_playbook.yml</em></small></p></li>
62 </ul>
63 <p>RabbitMQ skal nå være installert og tilgjengelig på <em>https://mq-hostname</em></p>
64 </section>
65
66 <section>
67 <h2>Administrator-bruker</h2>
68 </br>
69 <p>Brukeren <em>guest</em> med passord <em>guest</em> vil eksistere etter at Ansible har kjørt</p>
70 <p>I tillegg til webgrensesnittet, kan en bruke <em>rabbitmqctl</em></p>
71 <ul>
72 <li><p><small><em>rabbitmqctl list_users</em> (Lister alle eksisterende RabbitMQ-brukere)</small></p></li>
73 <li><p><small><em>rabbitmqctl add_user rmq_admin &lt;passord&gt;</em> (Legger til dedikert admin bruker <em>rmq_admin</em>)</small></p></li>
74 <li><p><small><em>rabbitmqctl set_user_tags rmq_admin administrator</em> (Gir administrator rolle til <em>rmq_admin</em>)</small></p></li>
75 <li><p><small><em>rabbitmqctl delete_user guest</em> (Sletter brukeren <em>guest</em>)</small></p></li>
76 </ul>
77 </section>
78
79 <section>
80 <h2><em>vhost</em></h2>
81 </br>
82 <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>
83 <ul>
84 <li><p><small><em>rabbitmqctl list_vhosts</em> (Lister alle eksisterende vhosts)</small></p></li>
85 <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>
86 </ul>
87 </section>
88
89 <section>
90 <h2>Rettigheter</h2>
91 <p>RabbitMQ implementerer 2 rettighetsnivåer:</p>
92 <ul>
93 <li>Per <em>vhost</em></li>
94 <li>Per entitet</li>
95 </ul>
96 <p>RabbitMQ definerer 3 typer operasjoner:</p>
97 <ul>
98 <li><p><em>configure</em> - opprette / slette entiteter eller endre deres oppførsel</p></li>
99 <li><p><em>write</em> - skrive melding til en entitet</p></li>
100 <li><p><em>read</em> - lese melding fra entitet</p></li>
101 </ul>
102 </section>
103
104 <section>
105 <h2>Rettigheter og brukere</h2>
106 <p>RabbitMQ bruker <em>regular expressions</em> til å definere rettigheter</p>
107 <ul>
108 <li><p><small><em>rabbitmqctl add_user cerebrum &lt;passord&gt;</em></small></p></li>
109 <li><p><small><em>rabbitmqctl add_user uio_ad_microservice &lt;passord&gt;</em></small></p></li>
110 <li><p><small><em>rabbitmqctl set_permissions -p /no/uio/integration cerebrum "^$" "^ex_.*" "^$"</em></small></p></li>
111 <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>
112 </ul>
113 </section>
114
115 <section>
116 <h2>Køer</h2>
117 <p>Køer defineres som <em>durable</em> ved hjelp av webgrensesnittet.</p>
118 <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>
119 <p>F.eks. <em>q_ad_microservice</em> vil være et passende navn for køen som brukes av AD-microservice mottakeren.</p>
120 </section>
121
122 <section>
123 <h2><em>Exchange</em></h2>
124 <p>"Avsendere vil vanligvis sende meldinger til exchange <em>ex_messages</em>."</p>
125 <p>Det er flere typer <em>exchange</em>, men vi vil bruke kun <em>topic exchange</em>.</p>
126 </section>
127 </section>
128
129 <section>
130 <section>
131 <h2>Utvikling</h2>
132 </br>
133 <ul>
134 <li><p><em>Routing keys</em> i <em>topic exchange</em></p></li>
135 <li><p>Bindinger</p></li>
136 <li><p>Protokoller og porter</p></li>
137 <li><p>Exempler</p></li>
138 </ul>
139 </section>
140
141 <section>
142 <h2><em>Routing keys</em> i <em>topic exchange</em></h2>
143 </br>
144 </section>
145
146 <section>
147 <h2>Bindinger</h2>
148 </br>
149 </section>
150
151 <section>
152 <h2>Protokoller og porter</h2>
153 </br>
154 </section>
155
156 <section>
157 <h2>Exempler</h2>
158 </br>
159 <p>Python:</p>
160 <p>"Well, we'll not risk another frontal assault. That rabbit's dynamite...."</p>
161 </section>
162
163 </section>
164
165 <section>
166 <section>
167 <h2>Dokumentasjon og lenker</h2>
168 </br>
169 <p>
170 RabbitMQ:
171 </p>
172 <ul>
173 <li>
174 <p>
175 <small>
176 <a href="http://www.rabbitmq.com">http://www.rabbitmq.com</a> - RabbitMQ sin offisielle side
177 </small>
178 </li>
179 <li>
180 <p>
181 <small>
182 <a href="http://www.rabbitmq.com/configure.html">http://www.rabbitmq.com/configure.html</a> - Generell konfigurasjon av RabbitMQ
183 </small>
184 </li>
185 <li>
186 <p>
187 <small>
188 <a href="http://www.rabbitmq.com/management.html">http://www.rabbitmq.com/management.html</a> - Bruk av rabbitmq_management plugin i RabbitMQ
189 </small>
190 </li>
191 <li>
192 <p>
193 <small>
194 <a href="http://www.rabbitmq.com/access-control.html">http://www.rabbitmq.com/access-control.html</a> - Tilgangskontroll i RabbitMQ
195 </small>
196 </li>
197 <li>
198 <p>
199 <small>
200 <a href="http://www.rabbitmq.com/man/rabbitmqctl.1.man.html">http://www.rabbitmq.com/man/rabbitmqctl.1.man.html</a> - rabbitmqctl manual side
201 </small>
202 </li>
203 <li>
204 <p>
205 <small>
206 <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
207 </small>
208 </li>
209 </ul>
210 </section>
211 <section>
212 <h2>Dokumentasjon og lenker</h2>
213 <p>
214 UiO:
215 </p>
216 <ul>
217 <li>
218 <p>
219 <small>
220 <a href="http://www.usit.uio.no/om/tjenestegrupper/cerebrum/utvikling/dokumentasjon/tools/rabbitmq.html">Installasjon og oppsett av RabbitMQ for Cerebrum utviklere</a>
221 </small>
222 </li>
223 <li>
224 <p>
225 <small>
226 <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>
227 </small>
228 </li>
229 <li>
230 <p>
231 <small>
232 <a href="https://www.usit.uio.no/om/organisasjon/uav/usitint/interndokumentasjon/broker/broker_oppsett.html">Oppsett og installasjon av RabbitMQ</a> (intern)
233 </small>
234 </li>
235 <li>
236 <p>
237 <small>
238 <a href="https://www.usit.uio.no/om/organisasjon/uav/usitint/interndokumentasjon/broker/utredning-meldingsflyt.html">Utredning: Meldingsflyt, kø-struktur og navngiving</a> (intern)
239 </small>
240 </li>
241 </ul>
242 <p>
243 Bøker:
244 </p>
245 <ul>
246 <li>
247 <p>
248 <small>
249 RabbitMQ in action - Alvaro Videla / Jason J.W. Williams - 2012 - Manning
250 </small>
251 </li>
252 <li>
253 <p>
254 <small>
255 Mastering RabbitMQ - Ayanoglu / Aytas / Nahum - 2015 - PACKT Publishing
256 </small>
257 </li>
258 </section>
259 </section>
260 </div>
261 </div>
262
263 <script src="lib/js/head.min.js"></script>
264 <script src="js/reveal.js"></script>
265 <script>
266
267 // More info https://github.com/hakimel/reveal.js#configuration
268 Reveal.initialize({
269 controls: true,
270 progress: true,
271 history: true,
272 center: true,
273
274 transition: 'slide', // none/fade/slide/convex/concave/zoom
275
276 // More info https://github.com/hakimel/reveal.js#dependencies
277 dependencies: [
278 { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
279 { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
280 { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
281 { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
282 { src: 'plugin/zoom-js/zoom.js', async: true },
283 { src: 'plugin/notes/notes.js', async: true }
284 ]
285 });
286
287 </script>
288
289 </body>
290</html>