{"id":28110,"date":"2019-10-16T01:11:00","date_gmt":"2019-10-15T23:11:00","guid":{"rendered":"https:\/\/blexin.com\/?p=28110"},"modified":"2021-05-21T20:31:05","modified_gmt":"2021-05-21T18:31:05","slug":"risolviamo-il-rebus-della-comunicazione","status":"publish","type":"post","link":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/","title":{"rendered":"Risolviamo il &#8220;rebus&#8221; della comunicazione"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" data-attachment-id=\"28112\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/2fa08949-b9ed-4c60-a608-d707005a53dc\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&amp;ssl=1\" data-orig-size=\"1024,608\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"2fa08949-b9ed-4c60-a608-d707005a53dc\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?resize=1024%2C608&#038;ssl=1\" alt=\"\" class=\"wp-image-28112\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc-980x582.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc-480x285.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Negli articoli precedenti, abbiamo visto come fosse possibile disaccoppiare la comunicazione tra applicazioni utilizzando un Message Broker come RabbitMQ.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando un sistema software \u00e8 composto da pi\u00f9 servizi che svolgono compiti diversi ma che necessitano di interagire tra loro per eseguire elaborazioni sulle informazioni scambiate, \u00e8 molto importante fare in modo di eliminare la comunicazione punto-punto ed utilizzare una strategia che le renda indipendenti tra loro, in particolar modo quando il numero di tali applicazioni o servizi tende ad essere molto elevato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In questo scenario, pu\u00f2 essere molto efficace l\u2019adozione di un middleware che si occupi di astrarre la comunicazione tra i servizi coinvolti e che consenta, quindi, al nostro sistema software di essere scalabile in termini di componenti.<br>Tale soluzione prende il nome di&nbsp;<strong>Service Bus<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In letteratura, possiamo trovare moltissime definizioni, ma sinteticamente si pu\u00f2 dire che un Service Bus \u00e8 un sistema software che consente la comunicazione e la coordinazione tra servizi eterogenei mediante pattern noti per lo scambio di messaggi.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"503\" data-attachment-id=\"28116\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/1\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/1.jpg?fit=662%2C503&amp;ssl=1\" data-orig-size=\"662,503\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/1.jpg?fit=662%2C503&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/1.jpg?resize=662%2C503&#038;ssl=1\" alt=\"\" class=\"wp-image-28116\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/1.jpg 662w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/1-480x365.jpg 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 662px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019utilizzo di un\u2019architettura del genere prevede che la comunicazione tra le entit\u00e0 coinvolte sia sotto la responsabilit\u00e0 del bus e che quindi i servizi coinvolti devono preoccuparsi solo di interfacciarsi col bus.<br>Un\u2019implementazione interessante di un Service Bus per .Net \u00e8 sicuramente\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/rebus-org\/Rebus\/wiki\" target=\"_blank\">Rebus<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"200\" data-attachment-id=\"28118\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/2\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2.png?fit=200%2C200&amp;ssl=1\" data-orig-size=\"200,200\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2.png?fit=200%2C200&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2.png?resize=200%2C200&#038;ssl=1\" alt=\"\" class=\"wp-image-28118\" srcset=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2.png?w=200&amp;ssl=1 200w, https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2.png?resize=150%2C150&amp;ssl=1 150w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Rebus \u00e8 una libreria Open Source e viene definita dai proprio creatori in questo modo:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u201ca thing that in a transparent and distributed way enables communication between bounded contexts\u201d<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tale libreria viene fornita come pacchetto NuGet ed \u00e8 abbastanza immediato configurare la nostra applicazione per l\u2019utilizzo di Rebus, in quanto viene fornita una\u00a0<strong>Configuration API<\/strong>\u00a0che ci aiuta ad istanziare il bus in pochi passaggi.<br>Di seguito possiamo vedere il minimo set necessario alla creazione di un bus funzionante:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nvar bus = Configure.With(handlerActivator)\n\u00a0\u00a0\u00a0\u00a0.Transport(chosenTransport)\n\u00a0\u00a0\u00a0\u00a0.Start();\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Il metodo&nbsp;<em>With()<\/em>&nbsp;riceve come parametro un handler di messaggi. Questo handler pu\u00f2 essere il BuiltinHandlerActivator fornito da Rebus oppure un Adapter per l\u2019IoC Container utilizzato eventualmente nella nostra applicazione.<br>Il metodo&nbsp;<em>Transport()<\/em>&nbsp;consente di scegliere il meccanismo di trasporto e la modalit\u00e0 del bus che pu\u00f2 essere:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><em>Normal<\/em>: modalit\u00e0 in cui il bus \u00e8 capace di ricevere messaggi;<\/li><li><em>One-Way Client<\/em>: modalit\u00e0 in cui il bus \u00e8 solo capace di inviare messaggi.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Prima dello&nbsp;<em>Start()<\/em>&nbsp;,che finalizza la configurazione del bus, possono essere aggiunte ulteriori configurazioni opzionali. Ad esempio, quella riguardante il Logging, utile per capire cosa succede nell\u2019interazione mediante il bus, o come quella di Routing che serve a instradare in maniera corretta i messaggi verso la destinazione.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vediamo adesso come utilizzare Rebus in un semplice esempio consistente in un\u2019applicazione che crea un messaggio e lo invia verso il bus ed un\u2019altra che consuma tale messaggio. Per questo esempio, vedremo tre possibili casi con i seguenti meccanismi di trasporto:&nbsp;<strong>MSMQ<\/strong>&nbsp;(Microsoft Message Queuing),&nbsp;<strong>RabbitMQ<\/strong>&nbsp;e<strong>&nbsp;ASB<\/strong>&nbsp;(Azure Service Bus).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Trasporto con MSMQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Microsoft Message Queuing \u00e8 una tecnologia di comunicazione asincrona basata su code messa a disposizione da Microsoft.<br>Per poter utilizzare MSMQ bisogna installarlo abilitandolo nelle Features di Windows all\u2019interno del Pannello di Controllo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"420\" height=\"370\" data-attachment-id=\"28121\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/3\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3.png?fit=420%2C370&amp;ssl=1\" data-orig-size=\"420,370\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3.png?fit=420%2C370&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3.png?resize=420%2C370&#038;ssl=1\" alt=\"\" class=\"wp-image-28121\" srcset=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3.png?w=420&amp;ssl=1 420w, https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/3.png?resize=300%2C264&amp;ssl=1 300w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Creiamo due Console Application, una chiamata\u00a0<strong>Sender<\/strong>\u00a0e l\u2019altra\u00a0<strong>Receiver<\/strong>\u00a0ed installiamo Rebus e Rebus.Msmq come pacchetti\u00a0<em>NuGet<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"301\" data-attachment-id=\"28123\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/4\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/4.png?fit=640%2C301&amp;ssl=1\" data-orig-size=\"640,301\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/4.png?fit=640%2C301&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/4.png?resize=640%2C301&#038;ssl=1\" alt=\"\" class=\"wp-image-28123\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/4.png 640w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/4-480x226.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 640px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il seguente blocco di codice \u00e8 relativo all\u2019applicazione\u00a0<strong>Sender<\/strong>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nnamespace Sender\n{\n\u00a0\u00a0\u00a0\u00a0class Program\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0static void Main(string&#x5B;] args)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0using (var activator = new BuiltinHandlerActivator())\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var message = new DemoMessage(&quot;Demo Message&quot;);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var bus = Configure.With(activator)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.Transport(t =&gt; t.UseMsmq(&quot;Sender&quot;))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.Routing(r =&gt; r.TypeBased().Map&lt;DemoMessage&gt; (&quot;Receiver&quot;))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.Start();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bus.Send(message).Wait();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Console.ReadLine();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Come possiamo vedere, in questo esempio, utilizziamo il&nbsp;<code>BuiltinHandlerActivator<\/code>&nbsp;fornito da Rebus.<br>Successivamente, creiamo un\u2019istanza dalla classe&nbsp;<em>DemoMessage<\/em>, la quale contiene semplicemente un campo di tipo&nbsp;<em>string<\/em>&nbsp;che utilizzeremo come contenuto del messaggio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con Transport(t => t.UseMsmq(&#8220;Sender&#8221;)) dichiariamo l\u2019utilizzo di MSMQ per il trasporto dei messaggi e la stringa \u201cSender\u201d sar\u00e0 il nome della coda che verr\u00e0 creata automaticamente. Possiamo notare che, a differenza della configurazione base, troviamo la configurazione opzionale\u00a0<em>Routing<\/em>. Il routing in Rebus serve a specificare dove dev\u2019essere inviato il messaggio.<br>Il tipo di routing utilizzato nell\u2019esempio \u00e8 Type-Based, cio\u00e8 il tipo di messaggio DemoMessage \u00e8 destinato solo ad un determinato endpoint ed in particolare a quello che possiede la coda identificata dalla stringa \u201cReceiver\u201d. Infine, viene inviato il messaggio verso la destinazione:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"189\" data-attachment-id=\"28126\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/5\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/5.png?fit=1145%2C211&amp;ssl=1\" data-orig-size=\"1145,211\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/5.png?fit=1024%2C189&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/5.png?resize=1024%2C189&#038;ssl=1\" alt=\"\" class=\"wp-image-28126\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/5-1024x189.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/5-980x181.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/5-480x88.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il seguente blocco di codice \u00e8 relativo all\u2019applicazione\u00a0<strong>Receiver<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nnamespace Receiver\n{\n\u00a0\u00a0\u00a0\u00a0class Program\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0static void Main(string&#x5B;] args)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0using (var activator = new BuiltinHandlerActivator())\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0activator.Handle&lt;DemoMessage&gt; (async msg =&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Console.WriteLine($&quot;Received: {msg.Text}&quot;);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Configure.With(activator)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.Transport(t =&gt; t.UseMsmq(&quot;Receiver&quot;))\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.Start();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Console.WriteLine(&quot;Press &#x5B;enter] to exit.&quot;);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Console.ReadLine();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0}\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Anche in questo caso, viene istanziato un handler per il tipo di messaggio\u00a0<em>DemoMessage<\/em>. Nel Transport si dichiara l\u2019utilizzo di MSMQ e il nome della coda \u201cReceiver\u201d che \u00e8 la stessa a cui \u00e8 destinato il messaggio del Sender.<br>Come mostrato nell\u2019immagine seguente, verr\u00e0 stampato correttamente il contenuto del messaggio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"133\" data-attachment-id=\"28129\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/6\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/6.png?fit=1499%2C195&amp;ssl=1\" data-orig-size=\"1499,195\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/6.png?fit=1024%2C133&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/6.png?resize=1024%2C133&#038;ssl=1\" alt=\"\" class=\"wp-image-28129\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/6-980x127.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/6-480x62.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Trasporto con RabbitMQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Come abbiamo visto nell&#8217;articolo\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/www.blexin.com\/it-IT\/Article\/Blog\/Disaccoppiare-la-comunicazione-con-RabbitMQ-40\" target=\"_blank\">Disaccoppiare la comunicazione con RabbitMQ<\/a>, RabbitMQ \u00e8 un message broker che implementa il pattern Publish\/Subscribe. Per poter utilizzare RabbitMQ con Rebus basta applicare delle piccole modifiche alle due applicazioni Sender e Receiver oltre ad installare il relativo pacchetto NuGet per il trasporto. Per quanto riguarda il Sender, andremo a modificare il tipo di Transport utilizzando il bus nella modalit\u00e0 One-way, in quanto siamo solo interessati a pubblicare il messaggio:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nTransport(t =&gt; t.UseRabbitMqAsOneWayClient(&quot;amqp:\/\/localhost&quot;))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">La stringa passata come parametro della funzione rappresenta la connection string verso l\u2019istanza di RabbitMQ in esecuzione.<br>Inoltre, il messaggio viene pubblicato sul bus mediante il metodo Publish() che sfrutta lo scambio di messaggi basato su Topic di RabbitMQ.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"155\" data-attachment-id=\"28131\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/7\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/7.png?fit=1162%2C167&amp;ssl=1\" data-orig-size=\"1162,167\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/7.png?fit=1024%2C147&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/7.png?resize=1080%2C155&#038;ssl=1\" alt=\"\" class=\"wp-image-28131\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/7-1024x147.png 1162w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/7-980x141.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/7-480x69.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1162px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Il topic viene automaticamente definito in base al tipo del messaggio, come possiamo vedere in figura:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"824\" data-attachment-id=\"28134\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/8\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/8.png?fit=1390%2C1118&amp;ssl=1\" data-orig-size=\"1390,1118\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"8\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/8.png?fit=1024%2C824&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/8.png?resize=1024%2C824&#038;ssl=1\" alt=\"\" class=\"wp-image-28134\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/8-980x788.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/8-480x386.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Anche per quanto riguarda il Receiver, ci sono poche modifiche da fare e sono relative al trasporto in quanto, dovendo ricevere il messaggio, dovremo utilizzare la modalit\u00e0 Normal del bus:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nTransport(t =&gt; t.UseRabbitMq(&quot;amqp:\/\/localhost&quot;, &quot;Receiver&quot;))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Il primo parametro rappresenta la stringa di connessione ed il secondo invece la coda di input. Terminata la configurazione, sottoscriviamo il Receiver ai messaggi di tipo\u00a0<em>DemoMessage<\/em><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nbus.Subscribe&lt;DemoMessage&gt;().Wait();\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"137\" data-attachment-id=\"28136\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/9\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/9.png?fit=1506%2C201&amp;ssl=1\" data-orig-size=\"1506,201\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"9\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/9.png?fit=1024%2C137&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/9.png?resize=1024%2C137&#038;ssl=1\" alt=\"\" class=\"wp-image-28136\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/9-980x131.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/9-480x64.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Trasporto con Azure Service Bus<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tra i servizi cloud messi a disposizione da Azure vi \u00e8 anche il broker di messaggi Azure Service Bus.<br>Per creare un\u2019istanza di ASB cerchiamo il servizio nella Home di Azure:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"419\" data-attachment-id=\"28139\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/10\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/10.png?fit=1844%2C754&amp;ssl=1\" data-orig-size=\"1844,754\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"10\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/10.png?fit=1024%2C419&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/10.png?resize=1024%2C419&#038;ssl=1\" alt=\"\" class=\"wp-image-28139\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/10-980x401.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/10-480x196.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Creiamo un nuovo namespace stando bene attenti a selezionare la versione Standard in quanto la versione Basic non supporta lo scambio di messaggi di tipo Publish\/Subscribe basato su Topic:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"419\" data-attachment-id=\"28141\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/10-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/10-1.png?fit=1844%2C754&amp;ssl=1\" data-orig-size=\"1844,754\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"10-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/10-1.png?fit=1024%2C419&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/10-1.png?resize=1024%2C419&#038;ssl=1\" alt=\"\" class=\"wp-image-28141\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/10-1-980x401.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/10-1-480x196.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta eseguito il deploy del container, nella sezione\u00a0<em>Shared access policies<\/em>\u00a0possiamo ottenere la connection string da utilizzare nelle applicazioni Sender e Receiver.<br>Cos\u00ec, come nel caso di RabbitMQ, andremo solo a modificare il tipo di trasporto:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nTransport(t =&gt; t.UseAzureServiceBus(azureServiceBusConnection,&quot;Sender&quot;))\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">e a sottoscrivere il Receiver ai messaggi di tipo\u00a0<em>DemoMessage<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"231\" data-attachment-id=\"28144\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/12\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/12.png?fit=975%2C231&amp;ssl=1\" data-orig-size=\"975,231\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"12\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/12.png?fit=975%2C231&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/12.png?resize=975%2C231&#038;ssl=1\" alt=\"\" class=\"wp-image-28144\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/12.png 975w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/12-480x114.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 975px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Sender<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"198\" data-attachment-id=\"28146\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/13\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/13.png?fit=1196%2C231&amp;ssl=1\" data-orig-size=\"1196,231\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"13\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/13.png?fit=1024%2C198&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/13.png?resize=1024%2C198&#038;ssl=1\" alt=\"\" class=\"wp-image-28146\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/13-1024x198.png 1024w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/13-980x189.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/13-480x93.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Infine, sulla dashboard di Azure possiamo visualizzare grafici relativi alle richieste e ai messaggi scambiati, oltre che visualizzare le code ed i topic creati per la comunicazione tra le applicazioni.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"668\" data-attachment-id=\"28148\" data-permalink=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/attachment\/14\/\" data-orig-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/14.png?fit=1854%2C1210&amp;ssl=1\" data-orig-size=\"1854,1210\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"14\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/14.png?fit=1024%2C668&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/14.png?resize=1024%2C668&#038;ssl=1\" alt=\"\" class=\"wp-image-28148\" srcset=\"https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/14-980x640.png 980w, https:\/\/blexin.com\/wp-content\/uploads\/2020\/12\/14-480x313.png 480w\" sizes=\"auto, (min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Abbiamo visto come, utilizzando lo stesso codice e cambiando solo la tipologia di trasporto, sia essa su un broker di messaggi istanziato in locale o sul cloud, sia possibile fare interagire applicazioni mediante un Service Bus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rebus offre anche altre funzionalit\u00e0 come la modellazione dei Process Managers, conosciuti anche come Sagas. Una saga rappresenta qualcosa che evolve nel tempo a seconda di determinati trigger. \u00c8 possibile, quindi, modellare tale evoluzione come una sorta di macchina a stati, le cui transizioni da uno stato all\u2019altro sono scatenate dall\u2019arrivo di determinati messaggi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tratteremo di questi argomenti nel prossimo articolo, ma intanto lascio il link al repository dove \u00e8 possibile trovare i tre branch con gli esempi mostrati per MSMQ, RabbitMQ e ASB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/intersect88\/RebusDemo\">https:\/\/github.com\/intersect88\/RebusDemo<\/a><\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Vediamo come Rebus ci aiuta ad utilizzare un Service Bus astraendo il trasporto sottostante<\/p>\n","protected":false},"author":196716251,"featured_media":28112,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[688637374],"tags":[688637377,688637382,688637457,688637453,688637536],"class_list":["post-28110","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-azure","tag-c","tag-rabbitmq","tag-rebus","tag-swdesign"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Risolviamo il &quot;rebus&quot; della comunicazione - Blexin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Risolviamo il &quot;rebus&quot; della comunicazione - Blexin\" \/>\n<meta property=\"og:description\" content=\"Vediamo come Rebus ci aiuta ad utilizzare un Service Bus astraendo il trasporto sottostante\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/\" \/>\n<meta property=\"og:site_name\" content=\"Blexin\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-15T23:11:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-05-21T18:31:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"608\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Genny Paudice\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Genny Paudice\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/\"},\"author\":{\"name\":\"Genny Paudice\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/ae0e97a3ebb79d2f73e4411c1eb28973\"},\"headline\":\"Risolviamo il &#8220;rebus&#8221; della comunicazione\",\"datePublished\":\"2019-10-15T23:11:00+00:00\",\"dateModified\":\"2021-05-21T18:31:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/\"},\"wordCount\":1193,\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1\",\"keywords\":[\"Azure\",\"C#\",\"RabbitMQ\",\"Rebus\",\"softwaredesign\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/\",\"name\":\"Risolviamo il \\\"rebus\\\" della comunicazione - Blexin\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1\",\"datePublished\":\"2019-10-15T23:11:00+00:00\",\"dateModified\":\"2021-05-21T18:31:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/ae0e97a3ebb79d2f73e4411c1eb28973\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blexin.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1\",\"width\":1024,\"height\":608},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/blog\\\/risolviamo-il-rebus-della-comunicazione\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blexin.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Risolviamo il &#8220;rebus&#8221; della comunicazione\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/\",\"name\":\"Blexin\",\"description\":\"Con noi \u00e8 semplice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blexin.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blexin.com\\\/it\\\/#\\\/schema\\\/person\\\/ae0e97a3ebb79d2f73e4411c1eb28973\",\"name\":\"Genny Paudice\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3093a6ee7b7f555e94e4a5d6f19cb09f3af33635007643b2076eb89329789828?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3093a6ee7b7f555e94e4a5d6f19cb09f3af33635007643b2076eb89329789828?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3093a6ee7b7f555e94e4a5d6f19cb09f3af33635007643b2076eb89329789828?s=96&d=identicon&r=g\",\"caption\":\"Genny Paudice\"},\"url\":\"https:\\\/\\\/blexin.com\\\/it\\\/author\\\/genny-paudiceblexin-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Risolviamo il \"rebus\" della comunicazione - Blexin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/","og_locale":"it_IT","og_type":"article","og_title":"Risolviamo il \"rebus\" della comunicazione - Blexin","og_description":"Vediamo come Rebus ci aiuta ad utilizzare un Service Bus astraendo il trasporto sottostante","og_url":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/","og_site_name":"Blexin","article_published_time":"2019-10-15T23:11:00+00:00","article_modified_time":"2021-05-21T18:31:05+00:00","og_image":[{"width":1024,"height":608,"url":"https:\/\/i1.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1","type":"image\/png"}],"author":"Genny Paudice","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Genny Paudice","Tempo di lettura stimato":"7 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#article","isPartOf":{"@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/"},"author":{"name":"Genny Paudice","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/ae0e97a3ebb79d2f73e4411c1eb28973"},"headline":"Risolviamo il &#8220;rebus&#8221; della comunicazione","datePublished":"2019-10-15T23:11:00+00:00","dateModified":"2021-05-21T18:31:05+00:00","mainEntityOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/"},"wordCount":1193,"image":{"@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1","keywords":["Azure","C#","RabbitMQ","Rebus","softwaredesign"],"articleSection":["Blog"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/","url":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/","name":"Risolviamo il \"rebus\" della comunicazione - Blexin","isPartOf":{"@id":"https:\/\/blexin.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#primaryimage"},"image":{"@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1","datePublished":"2019-10-15T23:11:00+00:00","dateModified":"2021-05-21T18:31:05+00:00","author":{"@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/ae0e97a3ebb79d2f73e4411c1eb28973"},"breadcrumb":{"@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#primaryimage","url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1","width":1024,"height":608},{"@type":"BreadcrumbList","@id":"https:\/\/blexin.com\/it\/blog\/risolviamo-il-rebus-della-comunicazione\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blexin.com\/it\/"},{"@type":"ListItem","position":2,"name":"Risolviamo il &#8220;rebus&#8221; della comunicazione"}]},{"@type":"WebSite","@id":"https:\/\/blexin.com\/it\/#website","url":"https:\/\/blexin.com\/it\/","name":"Blexin","description":"Con noi \u00e8 semplice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blexin.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/blexin.com\/it\/#\/schema\/person\/ae0e97a3ebb79d2f73e4411c1eb28973","name":"Genny Paudice","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/3093a6ee7b7f555e94e4a5d6f19cb09f3af33635007643b2076eb89329789828?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3093a6ee7b7f555e94e4a5d6f19cb09f3af33635007643b2076eb89329789828?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3093a6ee7b7f555e94e4a5d6f19cb09f3af33635007643b2076eb89329789828?s=96&d=identicon&r=g","caption":"Genny Paudice"},"url":"https:\/\/blexin.com\/it\/author\/genny-paudiceblexin-com\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blexin.com\/wp-content\/uploads\/2020\/12\/2fa08949-b9ed-4c60-a608-d707005a53dc.png?fit=1024%2C608&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pcyUBx-7jo","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/users\/196716251"}],"replies":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/comments?post=28110"}],"version-history":[{"count":10,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28110\/revisions"}],"predecessor-version":[{"id":28152,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/posts\/28110\/revisions\/28152"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media\/28112"}],"wp:attachment":[{"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/media?parent=28110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/categories?post=28110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blexin.com\/it\/wp-json\/wp\/v2\/tags?post=28110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}