
quindi questa presentazione è chiamata
prendendo l’autobus hippy per l’impresa
sono circa tre problemi che ho
vissuto come un nella mia vita come a
sviluppatore di software e ho intenzione di mostrare
una soluzione che penso sia piuttosto interessante
a questi problemi si il mio nome è Monte
laba e io sono uno sviluppatore di software in a
consulenza e software bi piuttosto interessanti
consulenza di sviluppo chiamata 80/60 e
e sono anche uno sviluppatore di software in a
la società ha chiamato un particolare software
sviluppa in realtà un prodotto concorrente
chiamato
In-service bus quindi è un po ‘pignolo
situazione per me ma ma sono ancora
permesso di lavorare su un rebus e io sono ancora
permesso di parlarne così è uno
beh, questo è quello che farò oggi
se hai domande o pensi
qualsiasi cosa dopo per favore scrivimi un
email o contattami su Twitter si questo
la presentazione sarà su I will start
fuori parlando di quello che penso il tuo
il problema è e con ciò intendo forse
in realtà posso dire che quello è il mio
problema in modo potrei essere protetta qui
ma nella mia vita come sviluppatore di software
hanno spesso incontrato questi tre
problemi che ho intenzione di parlare di
e li vedo risolti in molti problemi
modi in cui ho intenzione di parlare di come
come risolverlo in un modo migliore così
questa è la parte in cui presento la mia
progetto rebus che è un servizio dotnet
in realtà mi piace pensare solo a quello
come libreria di messaggistica e poi lo sono
andando a mostrarvi alcuni abbastanza concreti
esempi su come questi problemi possono essere
risolto sì e alcuni in seguito
Inizierò con alcune diapositive e
alcuni parlano e, dopo tutto questo
parlando sulla traccia di architettura I
penso che ci sia del vero codice di esecuzione live
posto
Ti mostrerò anche del codice
Spero che sia un passaggio, quindi cos’è
il tuo problema immagino che alcuni di
potresti essere alle prese con i sistemi
che sono sfidati perché hanno
diventare grande e continueranno
diventando sempre più grande di solito
inizia come devi costruirne alcuni
qualcosa di semplice e poi tuo
cliente o il tuo datore di lavoro vuole
qualcosa in più e poi lo aggiungi e
continui ad aggiungere cose al sistema
e finisci con questo enorme monolitico
mucchio di spaghetti quindi penso che questo abbia
praticamente stato un tema ricorrente su
la pista oggi, quindi ti mostrerò
dove un modo per forse attaccare questo
problema inoltre ho visto molti
problemi con l’integrazione con esterni
parti penso che sia stato Sam Newman che
menzionato il elytis questo problema con
integrazione con parti esterne che è
fondamentalmente un problema di disponibilità dove
i problemi di disponibilità di quelli
le parti esterne si sono imposte su di te così
se ho visto così tanti sistemi fallire
perché qualche parte esterna ha fallito o
non c’era, quindi ti mostrerò un
modo per gestire quello che ho visto
in molti sistemi la logica è molto complessa
è una specie di cose che stanno succedendo
accadono altre cose che fanno altro
succedono cose e poi forse il sistema
aspetta un po ‘e poi un po’
altre cose accadono di nuovo e di solito io
ho visto cose del genere implementarle
in un modo molto implicito e frammentato
possibilmente avere una piscina da qualche parte e un
intero in un altro luogo e insieme
queste cose in realtà compongono lo stato
di un qualche tipo di processo che sta succedendo
nel sistema ma è frammentato e
è che è implicita e diffusa in tutto
il sistema quindi ti mostrerò a
modo di
forse rendi questo un po ‘più concreto
si , per riassumere, stai lottando
con un monolite forse ne hai un po ‘
problemi di integrazione e hai
forse problema nel coordinare la tua logica
o ragionamento su quali processi sono
sta succedendo nel tuo sistema e una soluzione
qui sto dicendo dissoluzione ma non lo faccio
voglio essere così audace da affermare che questo
è la soluzione
Voglio dire forse domani scopriremo
un modo migliore per gestire queste cose ma
il modo migliore che conosco al
il momento di gestire queste cose è vicino
utilizzando la messaggistica in modi intelligenti e
se lo sei, solo così tutti sono chiari
su cosa intendo per messaggio intendo quando
vuoi eseguire una sorta di
operazione è possibile modellare tale operazione
come una porzione di dati che può essere persistente
da qualche parte e può essere consegnato a
da qualche altra parte quindi è semplicemente così
quello è messaggistica è solo la memorizzazione e
rappresentando operazioni come blocchi di
dati che possono essere scambiati e salvati
sì, ma per fare tutto questo
lavorare in questo messaggistica deve accadere per
usando durevoli code asincrone loro
doveva essere durevole in modo che quando inviamo un
messaggio da qualche parte possiamo vedere che questo
il messaggio viene salvato in modo che il messaggio sia giusto
importante come un pezzo di dati che noi
potrebbe voler memorizzare nel database così
è molto importante che questi messaggi
sono trattati con lo stesso con lo stesso
cura come i dati nel nostro database così
quindi dobbiamo usare un messaggio duraturo
code inoltre deve essere
asincrono in questo modo abbiamo questo a
modalità ignifuga per inviare messaggi
e in questo modo non bloccheremo mai
quando invii un messaggio così non lo faremo mai
attendere che qualche destinatario sia presente o
qualsiasi cosa del genere possiamo sempre contare
su essere in grado di consegnare per ottenere il nostro
messaggi inviati così se lo sono
effettivamente consegnato al destinatario
quello è
questa è un’altra storia e questa è gestita
da Q’s o qualunque si e altra rete
gli sviluppatori in fresco qui va bene e se
siete le probabili opportunità per gli sviluppatori
sei su cui stai facendo funzionare il tuo codice
Windows e poi sei fortunato perché
Windows da quando Windows 2000 ha avuto un
costruita nel asincrono spunto mancato durevole
ha chiamato una coda di messaggi Microsoft FQ mancante
che puoi abilitare mettendo un assegno
contrassegnare e rimuovere i componenti di Windows così
la loro azione in realtà è una coda che noi
può usare per costruire queste cose
pesciolini
quindi è bello, sì, e ora lo sono
parlare di rebus rebus è così
un bus di servizio aziendale ma penso
quando dico bus di servizi aziendali
o autobus servizio, allora la gente sarà
pensando come hanno le persone
esperienze con i bus di servizio e
ci sono un sacco di prodotti commerciali fuori
lì che si tratta di autobus di servizio ma
allora sì , per evitare intendo evitare
confusione e voglio solo dirtelo
quel rebus non è una cosa da grande broker o
una grande cosa centrale monolitica che può
fai tutto nel mondo e e
traduci i messaggi e integrali con
tutti i tipi di sistemi che non può fare
qualsiasi cosa come quel rebus è in realtà
solo una libreria di messaggistica è molto
semplice libreria di messaggistica che può aiutare
scambiate messaggi in modo intelligente
modi in modo che è fondamentalmente quindi è un
è uno strato sottile sopra un qualche tipo di
code e ho intenzione di mostrarti oggi
con MS MQ sotto e sì, così è
fondamentalmente
e inoltre mi piace chiamarlo a
autobus hippie ma questo è che è una sorta di a
per contrastare questo un colletto bianco e cravatta
cosa che la gente di solito pensa di quando
pensano agli autobus di servizio che mi piacciono
pensa a rebus come molto molto bello e
autobus rilassato
questo è molto indulgente ed è gratuito e
questo è un sacco di cose che sono una specie di a
hippie piace così e non lo è
capitalista in ogni modo sì e sì come
Ho detto che è una libreria di messaggistica e questo
siede lì come strato sopra un smq
e il nucleo di Reba è una singola lettera
fatto per diello scusa sei garantito
essere in grado di includere fiumi nel tuo
progetto e non ha alcun conflitto con
qualsiasi cosa e poi se vuoi
integrazione con il diverso
roba di terze parti allora può essere
raggiunto con il piccolo dedicato
progetti di integrazione, ad esempio
i fiumi possono effettivamente usare RabbitMQ così com’è
un trasporto di messaggi e può salvare cose
in diversi tipi di database e altro
la mia motivazione per la creazione di rebus
era con cui ho lavorato
Ho lavorato professionalmente con
autobus in servizio per un paio d’anni e
ma dopo un paio di anni che hanno portato avanti
il ragazzo che ha creato e servizio autobus lui
ha cambiato la licenza in modo da averla
pagare per utilizzare nel bus di servizio e
questo mi ha reso davvero triste perché davvero
così mi piace l’open source e gratis
software e quindi sì, inoltre, in servizio
l’autobus ha avuto alcuni problemi è stato davvero difficile
per ottenere questo è iniziato un – voglio dire che aveva
alcuni problemi con le frecce che potrebbe
genererebbe un’eccezione di riferimento null
nel mezzo di quando stavi invocando
l’ API di configurazione e cose simili
che quindi c’erano alcune cose che
mi ha davvero infastidito per il bus in servizio
quindi volevo utilizzare il trasporto di massa con
che è un altro pass di servizio gratuito
implementazione e quella rete ma io
in realtà non potrei farcela funzionare io
ha avuto due giorni in un cottage estivo in alcuni
point e II non sono riusciti a farlo funzionare
quindi forse controllerò il codice ad alcuni
sfortunato in alcuni momenti sfortunati o
qualcosa ma ho rinunciato alla messa
transito quindi volevo forchetta e
servizio di autobus da quando era ancora libero
ma il bus in servizio era come un 250 C
progetti taglienti e 60 mila linee di
codice ed è stato totalmente
al momento era un casino completo così um
in realtà essi hanno hanno ripulito un sacco
Voglio solo dirlo, ma al momento
la base di codice era davvero disordinata ed enorme
sì, quindi volevo creare un rebus
è sempre stato gratuito e lo sarà
continua ad esserlo e inoltre lo voglio
essere davvero facile e davvero una parte fondamentale di
cioè deve avere davvero impressionante
messaggi di errore così quando si ottiene un errore
messaggio in rebus non è non è un
schiaffo in faccia
è sempre un passo in avanti quindi ogni errore
messaggio in rebus ti spiegherà
esattamente ciò che è sbagliato in pedagogia
termini e poi lo suggerirà
qualche tipo di soluzione quindi per esempio se
se tu rebus puoi cifrare il messaggio
corpi quindi se si desidera configurare
crittografia e ti dimentichi di fornire il
chiave, quindi rebus genererà una chiave per
tu ed effettivamente digiti l’XML
puoi mettere nel tuo file di configurazione
quindi voglio solo fare cose del genere
è davvero facile in modo che sia facile
andare avanti e facile in realtà facile
superare tutte le cose del mietitore e
inizia a lavorare sul tuo codice reale e
risolvendo i tuoi veri problemi si, inoltre
Solo perché ho iniziato , uno sono io
volevo creare un rebus in un modo che tu
potrebbe iniziare a usarlo al
inizio di un progetto e poi ad alcuni
indica se il progetto è diventato più serio
e potresti garantire la licenza
costo di licenza si potrebbe facilmente portare tutto
quindi il tuo codice su un bus di servizio
in realtà tutte le api sono in rebus
rubato da un autobus di servizio quindi tutto il
le API che vedrai tranne da
la configurazione api tutte le altre
le API vengono rubate dal bus di servizio così
sì, adesso è abbastanza piccolo
progetto tremila settecento
linee di codice c-sharp il codice è attivo
github e ha contributi da 12
sviluppatori oltre a me quindi non sono il
solo uno
sviluppandolo e tu ti alzi e corri
con rebus usando nougat così
questo è fondamentalmente il modo in cui ottieni
ha iniziato a fare cose internet al giorno d’oggi
la versione corrente è chiamata 0:43
è un nome di versione piuttosto criptico e io
è stato spesso chiesto quando la versione 1o
sarà fuori ma non credo che lo faccia
ho molto senso intendo ad un certo punto
volevo creare una versione 1o perché
questo suona un po ‘ non ufficiale e
sembra una specie di alfa ma è stato rebus
spostare denaro dalla versione 0 14
alfa e qui ha controllato a
un paio di centrali elettriche dal 17 17 alfa
quindi, voglio dire, la versione è proprio così
solo un numero non significa niente
in modo che probabilmente non sarà mai uno oh
sì, ho intenzione di mostrarti un precedente
demo in a in pochi secondi ma prima di noi
iniziare ci sono solo alcune cose che sono
buono a sapere con rebus tutti i messaggi sono
pianura vecchio ancora i nostri oggetti così quando tu
vuoi creare un nuovo messaggio tipo tu
basta creare una classe e poi ci metti
alcuni campi se vuoi qualche dato
nel tuo messaggio e quindi istanze di
quella classe può essere inviata come messaggi e
nel rebus tutti gli endpoint hanno il loro
coda di input quindi la coda di input di rebus
endpoint è una sorta di ID del del
endpoint e quindi ogni tipo di messaggio è
di proprietà di un servizio logico in modo che
significa che per ogni tipo di messaggio che è
puoi entrare nel tuo in tutti i tuoi sistemi
associare sempre quel tipo di messaggio a uno
endpoint da qualche parte e quell’endpoint
sarà il proprietario di quel messaggio così così
in questo modo c’è una mappatura della proprietà
potresti dire e te lo mostrerò
che in pochi secondi sì e poi lo è
già tempo per la prima demo sì sì
speriamo che funzioni così ho un
soluzione semplice qui con due progetti a
client e un server entrambi
le nostre semplici applicazioni per console
non fare nulla al momento, quindi ora io
voglio ora voglio essere in grado di inviare
messaggi dal client al server
quindi per farlo installerò
rebus nel server e ora nel
server posso configurare e quindi I
fornire questo adattatore contenitore in rebus
rebus vuole sempre un qualche tipo di
adattatore contenitore che di solito è il
posto dove userai uno dei
aromi che esistono per il contenitore di ioc
che si sta utilizzando, perché avrebbe usato
questo adattatore contenitore per cercare
gestori di messaggi così che di solito è dove
si intende collegarsi in qualche modo al CIO
contenitore di tua scelta allora vai
trasportare questo fondamentalmente l’ avi sempre
inizia così e poi si può dot
e poi puoi scoprire tutto il
diverse opzioni di configurazione
disponibile qui così in questo modo l’API
l’API di configurazione ha questa scoperta
cosa sta succedendo e poi configuro il
trasportare per utilizzare la coda MSM e ottenere input
nome della coda dalla config dell’app che è a
un po ‘lungo e poi creo il
bus e avviarlo così ora lo farò
avere un autobus in funzione, ma il programma lo farà
esci immediatamente così per evitare
che andrò semplicemente premere INVIO per uscire
come questo l’ho detto per raccogliere l’input
nome della coda dalla config dell’app, quindi ho solo
devo fornire un po ‘di XML in
app config per dirgli quale coda di input
da usare lo faccio con questo rebus
sezione di configurazione che farò solo
rendi un po ‘più semplice per ridurlo
il rumore così fondamentalmente ciò che questo
dice che questo endpoint rebus ha un
coda di input chiamata server dot input quindi
ha una coda di errore chiamata error this
significa che se il
elaborazione dei messaggi dal server in ingresso
fallisce più di cinque volte di seguito
sposta il messaggio all’errore Q
quindi in questo modo rebus non perderà mai a
messaggio che non perderà mai a
messaggio in realtà lo farà sempre
sicuro che il messaggio se qualcosa va
l’errore viene riportato in coda da
da dove viene e poi se è così
fallisce troppe volte si sposta al
coda d’aria per evitare di negare il servizio al tuo
endpoint giusto quindi ora dovrei essere in grado
per avviare il server e ok ho ottenuto un
un paio di errori ora perché in realtà
sembra che ci fossero dei messaggi in
la coda per questo endpoint lo dice
non è stato possibile trovare alcun tipo di gestore
quattro messaggi di tipo system that string
così in realtà che c’era un paio di
stringhe nella coda di input di questo
endpoint quindi solo per dimostrare che non lo sono
mentendo posso iniziare questo molto semplice
MSM qq inspector e quindi puoi vedere
ora nella coda dell’era abbiamo i tre
stringhe da ora in poi così sono
seduto qui al sicuro e non se ne sono andati
va bene, creiamo un messaggio
gestore qui dentro di solito lo faresti
tu registreresti un messaggio magico
gestori nel tuo contenitore ioc ma da allora
sto usando questo contenitore dell’edificio
adattatore che è molto semplice lo farò solo
posso registrare gestori come questo lo farò
basta registrarsi un po ‘di tipo che dice rebus
può usare questo come gestore e
quindi trasformo questo in un gestore di messaggi
andando a gestire i messaggi di tipo
stringa questo questo mi costringerà a
implementare questo metodo chiamato gestire con
il tipo che ho specificato qui e in
questo server mi piacerebbe gestire
gli archi appena salutati hanno ricevuto un saluto
Messaggio
quindi riavvierò di nuovo il server sì
e lasciarlo in esecuzione, quindi creiamo il
cliente io installare il pacchetto di rebus
nel client configurerò oh
configurare l’adattatore del contenitore che farò
digli di usare un smq in un modo client
modalità in questo modo il client non avrà
la sua coda di input così sarà in grado
per inviare messaggi al server ma questo
non sarà in grado di ricevere nulla
indietro ma va bene e questa volta io
chiamerà questo messaggio come proprietà
che mi permetterà di dire ai lettori come
può determinare chi possiede i messaggi di a
dato il tipo e in questo caso lo dirò
per prenderlo dal rebus
sezione di configurazione quindi mi limiterò
fornire tale proprietà del messaggio
informazioni in un attimo e lo farò giusto
leggi un saluto qui scrivi un saluto
come questo e poi quando sto usando il
Buildin Adattatore contenitore Posso trovare il
bus l’ istanza del bus che è il
il risultato della chiamata di questa API sarà attivo
la privacy del bus così ho potuto prenderlo
come questo di solito se stai usando un gelido
contenitore si risolverebbe il bus AI
dal tuo contenitore e manderò semplicemente
questo saluto quindi nota come in
cliente qui non non mi preoccupo
chi riceverà questo messaggio io
Dì solo a rebus che voglio mandare questo
messaggio e poi i fiumi dovranno
capire dove spedirlo così è
tipo di dove il tipo di questo molto
lo strato bus molto semplice entra in gioco e loro
usa questa proprietà molto semplice
mappature per determinare dove il messaggio
dovrei andare così in questo caso provvederò
una sezione di configurazione del rebus qui
rimuovi tutto il perk in tuo favore e
quindi userò un unico endpoint
mappatura che è il modo in cui si mappa a
tipo di messaggio a un endpoint all’unica
endpoint in questo caso voglio mappare
sistema che stringa da un suggerimento di chiamata Miss
al punto di inserimento del server, come puoi vedere
questo è un modo molto molto semplice di
specificando che si tratta di messaggi di tipo
la stringa di sistema è di proprietà dell’endpoint
nascondendo dietro l’input di un servitore così ora io
dovrebbe essere in grado di avviare il client e
il client è in esecuzione e il server è
correndo e scusa ciao e ho preso il verde
così come puoi vedere ora posso inviarlo
messaggi dal client al server
e per dimostrare che nessun messaggio è stato perso
Ho queste tre corde nel mio arrack
io posso posso selezionare questi messaggi
e poi da quando rebus mette l’originale
la sorgente Q che è la Q dove questi
messaggi non riusciti come messaggio aggiuntivo
i fiumi di intestazione possono restituire questi messaggi
alla coda di salsa e in questo modo
consegnati i messaggi al server e
sì in questo modo
nessun messaggio è stato perso sì, quindi era a
demo molto breve che mostra quanto sia semplice
è per alzarsi e correre con
rebus così ora di nuovo al tre
problemi di cui ho parlato abbiamo parlato
su questo sistema che stava diventando troppo
grande e integrazione con esterno
parti e qualche logica complessa con
coordinamento e tempismo il primo
problema e ho una sorta di rubato il
impostazione dal lavoro in uno dei nostri
clienti al t60 in cui stiamo costruendo
questa piattaforma di trading sì, immagina
che stiamo costruendo una piattaforma di trading
dove sono i commercianti nel front office
accordi straordinari con le controparti e
poi un po ‘di personale amministrativo a
indietro
questo farà in modo che questi
le controparti sono a carico così noi abbiamo
abbiamo un’applicazione che può catturare
commercia e può fare la fatturazione così già
sembra che abbiamo un sistema che è
tipo di fare troppo e non lo è
davvero concentrato quindi voglio entrare in a
poche alcune delle cose che sono state
menzionato oggi e ma ho intenzione di aggiungere
distribuito a questo perché c’è
una sorta di un tipo di progettazione basata sul dominio
che ha questa T più nella parte anteriore, che è
dominio distribuito diverso guidato
design che più tardi
Penso che si sia evoluto in tutto questo CQRS e
la roba bidone di sourcing che sta succedendo
Internet al momento e ma la chiave
è che usiamo questo concetto di a
delimitazione delimitata contesto dalla principale
design della camera per catturare il
fatto che potremmo avere diversi
sottodomini nel nostro grande dominio così in questo
caso abbiamo questo un grande bene
dominio commerciale ma in realtà ci sono
due sottodomini in gioco qui abbiamo questo
dominio commerciale dove sono i commercianti
punzonare gli scambi nel sistema e noi
avere un dominio di fatturazione in cui alcune persone
di solito una volta al mese o qualcosa del genere
andrà e selezionerà un sacco di mestieri
e poi si assicureranno che il
le controparti sono fatturate sì sì
in questo caso nella prima demo lo farò
mostra come Reba può forse aiutarti
separa il tuo grande sistema in due
domini separati in modo diciamo solo fermare questo
ancora
questa è la demo 1 di questa demo ne ho due
due cartelle soluzione chiamate back office
e il front office in front office che ho
il servizio di trading qui che è a
semplice endpoint Reapers che lo farà
configurerà una memoria di sottoscrizione
questo significa che questo endpoint sarà
in grado di memorizzare gli abbonati che sarà
in grado di pubblicare messaggi a questi
abbonati così così in questo modo la lattina di Reba
ha questa implementazione di pubblicare
iscriviti che puoi usare e in questo
endpoint commerciale
Inserirò il nome di una controparte
e un importo e un prezzo e poi esso
pubblicherà questo nuovo trade registrato
evento nuovo commercio registrato è solo un
classe semplice che ho fatto in questo
scambiare messaggi di tipo assembly in questo modo
modo in fatturazione in questo modo può fatturazione
includere un riferimento al treno che
messaggi assembly e hanno accesso a
questo tipo di evento e fatturazione che è
possibile anche un semplice endpoint di Reba
iscriversi al nuovo commercio registrato
evento così quando lo avvia
stabilisce un abbonamento a questo evento
dal momento che l’editore ha utilizzato un
MongoDB come abbonamento lo memorizza
lo ricorderò per sempre così anche se io
riavviare l’editore o ucciderlo o
qualunque cosa io possa pensare, lo farà
sappi che questo abbonato esiste quando lo fa
si avvia di nuovo si e poi il
il sottoscrittore registra questo gestore chiamato
addebitare al cliente quale solo quale
gestisce questo nuovo evento del record commerciale e
stampa solo il messaggio
informazioni sulla console quindi proviamo
ed esegui questo che era fatturazione e
quello era il trading quindi ora quello che sto facendo trading
posso farlo
e
otterremo gli eventi pubblicati in questo modo
modo che puoi usare
pubblica / sottoscrivi messaggi tra i tuoi
applicazioni e loro saranno davvero dispiaciuti
c’era un errore
a quanto pare una stringa non è valida
numero Mi dispiace, basta toccare questo
uno di nuovo ho voluto smettere di fatturare I
voglio uccidere la costruzione e quindi pubblicare
alcuni eventi e come puoi vedere quando
l’edificio ricomincia a ricevere
questi eventi come se nulla fosse successo così
in questo modo possiamo avere una messaggistica affidabile
e questi sistemi saranno molto generici
accoppiato e non mi interessa se
sono entrambi lì allo stesso tempo così
questo è abbastanza carino del nostro secondo
il problema è l’integrazione con un esterno
festa nel nostro dominio commerciale qui abbiamo
abbiamo questo chiamato un nuovo dipartimento
ufficio centrale che deve confermare tutto
commercia quando sono fatti e loro
conferma questi scambi chiedendo a
servizio web di sapone esterno chiamato credito
valutazione e chiedendo se questo
il cliente è buono o no, quindi è molto
semplice servizio di valutazione del credito e
qui vogliamo che sia così asincrono
che non lo facciamo noi non aspettiamo il
risultato fondamentalmente così noi se la rete di sapone
il servizio è lento o se è giù il resto
del sistema continuerà solo
inoltre deve essere affidabile così noi
non dimenticherò mai quello che stavamo facendo in modo
se questo è il servizio web di sapone, non lo è
disponibile quindi è davvero importante
che farà sì che questa chiamata sarà ferma
passare attraverso quando diventa disponibile in
Per farlo useremo i rebus
tentativi automatici e ho appena fatto
questo molto semplice un diagramma di sequenza a
mostrarti cosa succederà ora
il commercio pubblicherà questo nuovo commercio
registrare l’evento che sarà ora lo sarebbe
essere sottoscritto da conferme
le conferme invieranno il credito
richieste di stato
a un servizio di integrazione questo
il servizio di integrazione è proprio molto
semplice rebus in punto cui unico
la responsabilità nel mondo è
ricevere questi ottenere stato creato
le richieste quindi rendono questo sapone esterno
chiamare quale è l’operazione non sicura e
quindi restituirà la risposta contenente
il risultato di questa chiamata e poi quando
ciò accade dove si trova questa risposta
ricevuto in conferma lo farà
pubblicare questo commercio confermato o uno scambio
evento rifiutato a seconda del risultato
si
quindi vediamo come possiamo creare una rete
chiamata di servizio utilizzando una facciata di messaggistica
facciamo demo – quindi ora ho lo stesso codice
come prima non è cambiato nulla tranne
Ho aggiunto questo mezzo a questa cosa
il middle office ha le conferme
servizio che era questo uno e poi
ha un paio di messaggi un paio di
eventi che può pubblicare e poi esso
ha questa cartella esterna contenente il
servizio di integrazione che è questo
e poi ho messo questo credito
valutazione sapone molto pericoloso che serve
qui dentro c’è qualcosa di molto subdolo
implementazione come puoi vedere
in realtà fallisce il 75% delle volte che tu
chiamalo e poi il 25% delle volte
userà la lunghezza del
nome della controparte per determinare se
è bravo o no quindi è un po ‘pazzo
implementazione in realtà ma il punto è
che fallisce quasi ogni volta che chiami
sì, in questo servizio di integrazione che ho
reso questo molto semplice che Handler
gestisce la richiesta di ottenere lo stato del credito
quello era questo e poi lo fa
chiama e restituisce la risposta a
chi ha inviato questo e questo può farlo
creando il cliente facendo il sapone
chiamata al servizio web e quindi utilizzando il bus
per rispondere così in questo modo l’autobus sarà solo
rispondi a chi ha inviato il messaggio
che stiamo attualmente gestendo
sì, l’ ultima cosa da mostrare è
conferme abbiamo la cosa che
invoca tutto questo
è il gestore dello stato del credito di controllo
questo servizio di conferma è stato sottoscritto
al nuovo evento registrato tratto e poi
ha questo gestore che gestisce il
rispondi quando mi maneggi il nuovo tratto
registrato userà solo l’autobus per
invia questo e poi l’autobus ha un
mappatura degli endpoint su questa mappa
richiesta dello stato di credito all’integrazione
servizio e quindi poiché siamo il mittente
di questa richiesta otterremo la risposta
e poi a seconda dello stato ci sarà
pubblicare un commercio confermato o commerciale
evento rifiutato, quindi proviamo a correre
questo così come puoi vederti oh quello era un
chiamata in attesa in una coda così ora il
il debugger più profondo è appena entrato nel
debugger qui ma sì niente veramente
è successo in realtà è ancora in esecuzione
di nuovo qui e vediamo solo se costruire
si sta nascondendo qui così ora abbiamo
commerciando qui abbiamo il nuovo
servizio di conferma scusa abbiamo il
servizio di conferma qui e abbiamo
il servizio di integrazione qui quindi tutto il
è tutto il logging grigio e giallo
va bene
il giallo è avvertimento quindi questo in realtà
non ha mai avuto frecce in modo uniforme
sebbene abbia ottenuto un’eccezione a causa di
il meccanismo automatico dei tentativi lo farà
riprovare fino a cinque volte si bloccherà
questo errore come avvertimento e poi
sembra che non ci sia il logging rosso
qui la chiamata sarebbe finita
attraverso così vediamo se possiamo farcela
fallire oh non potrei far fallire questo
sì no in realtà non voglio spendere
nel momento in cui questo fallisce, preferirò piuttosto
vedere se riesco a far fallire l’ ultima demo
perché è più importante lì ma
il punto importante è che le chiamate vanno
anche se ne ha un po ‘
disponibilità disponibilità piuttosto ovvia
i problemi
qui, sì , sì , il terzo problema dell’elica
era questo complesso coordinamento e tempismo
cosa così immagina ora che l’edificio
ha bisogno di caricare il cliente ma ma
questo processo può essere ottimizzato inviando
fuori una grande fattura se lo stato del credito
del cliente è buono ma ma se il
status di credito è male, allora vogliamo
inviare immediatamente la fattura per evitare
qualsiasi rischio sì sì in questo modo una fatturazione
sarà ora una volta questo nuovo record commerciale
l’evento è ricevuto, attenderà il
stato del credito e quindi a seconda di questo
stato del credito invierà la fattura
in un modo o nell’altro, quindi abbiamo questo
processo in corso ora per evitare
dimenticando di inviare queste fatture in
caso questo servizio web chiamato fallisce e
non restituisce mai alcuna risposta che vogliamo prendere
e una sorta di azione alternativa se
nulla è accaduto entro 10 secondi
questo è in realtà ciò che viene chiamato a
processo manager in letteratura che
è un servizio di stato che è una specie di a
macchina di stato all’interno di un servizio di cui
le transizioni sono innescate dai messaggi così
immagina questa macchina statale dove
tutte le transizioni sono attivate da
messaggi che è il gestore dei processi e
possiamo avere un numero qualsiasi di istanze di
questo di questa macchina statale allora vogliamo
per introdurre una sorta di timeout
concetto per permetterci di prendere un’alternativa
azione se questo processo non ha
completato entro 10 secondi e vogliamo
essere in grado di eseguire queste compensazioni
azioni che in questo caso sono molto
Semplicemente, vogliamo solo mandare una email se
nulla è successo così ora la sequenza
il diagramma sembra come questo trading
pubblicare il nuovo evento registrato commerciale
che andrà ad entrambe le conferme e
fatturazione a conferma abbiamo tutto
questa cosa del sapone in corso , ho appena colpito tutti
il servizio di integrazione in questo
il piccolo ciclo effettua la chiamata esterna così ha
un po ‘ di cose locali in corso
ma non dobbiamo preoccuparcene
a questo proposito con questa cosa di conferme
è finita pubblicherà il vassoio
evento evento confermato che terminerà il
processo nella fatturazione e quindi fatturazione può
fare la sua fatturazione nel modo desiderato
a ma per se se questo commercio
l’ evento confermato non arriva mai
allora questo processo continuerà
per vivere e poi ad un certo punto noi
voglio svegliare questo processo
quindi quindi nella fatturazione quando iniziamo
il processo invieremo un timeout
richiesta per un servizio di timeout di cui solo
la responsabilità nella vita è ricevere un
tempo non richiesto attendere il tempo che quello
è specificato in questa richiesta di timeout e
poi restituirà una risposta timeout dopo
quella volta così in questo modo possiamo ordinare a
richiesta di timeout una sorta di campanello d’allarme
dopo 10 secondi userà la fatturazione
che svegliarsi dopo 10 secondi
se il processo non ha completato si così
quello sarà demo 3 così ora ho
cambiato ho cambiato la fatturazione e io
scusarsi in anticipo perché questo codice
potrebbe sembrare un po ‘ pazzo quando tu
guardalo all’inizio, ma in realtà lo è
davvero semplice mi fidi ora del
gestore del messaggio nella fatturazione chiamato addebito
il cliente ora è il capo del servizio
piace chiamare una saga ma in realtà è così
solo questo è quello che viene chiamato un processo
manager in letteratura su
sistemi distribuiti così perché ha scelto di
chiamalo saga Non so che è una cosa
lui ha rubato dalla teoria dei database, credo
questo processo viene elaborato
di questa classe di dati della saga di fatturazione , quindi sono
Ho creato questa classe in grado di modellare
lo stato della mia macchina statale ma questo
processo sta succedendo e non nel mio stato
macchina voglio memorizzare l’ID commerciale e
la controparte
un nome e poi voglio memorizzare il
dettagli commerciali e il risultato del
valutazione del merito di credito
così e questi non sono in grado perché io
non voglio fare ipotesi su
l’ordine in cui questi pezzi di
le informazioni arrivano così quando ottengo il
dettagli commerciali che ricorderò quelli e
quando ottengo il risultato della valutazione del merito di credito
Lo ricorderò
e poi ho avuto questo modo di controllare
se ho ricevuto questi stati
e dettagli commerciali e posso usarlo
completare il processo
ora si dice che questa saga è scatenata da
i messaggi in arrivo, quindi devo devo
gestire tutti i diversi tipi di
messaggi che possono attivare le transizioni in
la mia macchina a stati in questo caso la uso
speciale Sono avviato dall’interfaccia
che in realtà è solo una derivazione di I
gestire i messaggi che aggiungono qualcosa in più
semantica perché perché lo consente
consente a rebus di creare una nuova saga se
quello esistente non può essere trovato per questo
messaggio in arrivo in questo modo la mia saga
il processo qui può effettivamente essere avviato
sia da questo evento, ma può anche essere
avviato dal commercio confermare e commerciare
eventi rifiutati e lo sto facendo
perché se questo nuovo commercio registrasse un evento
in qualche modo fallisce pur essendo trattati in
la fatturazione passerà alla coda dell’era
e quindi le probabilità sono che lo farò
ricevere il commercio confermato prima di me
ricevuto un nuovo commercio registrato o possibile
elaborare il nuovo commercio registrato
con successo nella fatturazione in questo modo io
può rendere il mio sistema robusto nei confronti di
ordine dei messaggi sì, qui dentro
la saga devo specificare quali campi
dovrebbe essere correlato
quindi per ogni messaggio in arrivo posso puntare
un campo nel messaggio e dirgli
che dovrebbe correlarlo con a
campo nei dati della saga quindi questa saga
istanza se lì se un nuovo arrivo
evento record commerciale se esiste a
istanza di saga con l’ID scambiato che
corrisponde all’ID commerciale dell’ingresso
messaggio allora quell’istanza sarà
caricato e sarà
disponibile a me diversamente da quando l’ho usato
questo Io sono iniziato da esso creerò un
nuova istanza della saga per questi
eventi sì, sto per andare a correre
questo codice molto velocemente sì il the
il codice sarà disponibile in seguito e
github in modo da poter controllare più tardi su
se tu se sei curioso da quando ho gestito
questo nuovo commercio lo registra e commercia
confermato e scambiato gli eventi rifiutati in
allo stesso modo che posso pianificare
verifica in tutti loro così è
il modo in cui ho gestito tutto questo in questo
metodo posso chiedere se la saga è nuova
se è nuovo, allora posso usare questo differimento
API in rebus per inviare un messaggio nel
futuro quindi posso inviare questa verifica
completare il messaggio entro dieci secondi
futuro così sotto questo copre
dirà bugie questo in a
richiesta di timeout inviarlo al timeout
manager che attenderà per 10 secondi
e poi lo restituirà in un timeout
rispondi e poi lo spaccheremo
verificare il messaggio completo e lo farà
tenta di inviarlo alla saga il
modo che ho specificato qui in questo modo
se la saga non è stata completata quando
questo messaggio arriva quindi possiamo scrivere
alcune informazioni alla console o
manda una mail o qualsiasi altra cosa vogliamo
si, ho intenzione di provare a farlo
uno e poi vedremo se se funziona
quindi ora voglio davvero fare questo
fallire perché poi puoi vedere il
timeout viene attivato così ho il
conferma e il servizio di scadenza
e poi facciamo un po ‘di trading ed è così
controllare i creditori ed è
completato proviamo ancora e ora esso
fallito quindi il messaggio viene spostato nel
cue errore
quindi il processo si è fermato e quindi
entro dieci secondi dovrebbe essere il processo
svegliato dal momento in cui rispondo e poi noi
può fare tutto ciò che vogliamo inviare una e-mail o
avvisare un amministratore o qualunque cosa
ha senso farlo in questo modo che possiamo
assicurati che questi anche se
i messaggi potrebbero fallire e potrebbero finire in
i nostri segnali lungo la strada e e questi
i processi potrebbero fermarsi, quindi possiamo riprendere
il processo e intraprendere azioni alternative
si, spero che abbia senso che tu possa
controlla il codice se è stato visto
strano sì, per riassumere lo penso
la messaggistica fornisce un modello per questo
possono davvero aiutarti ad includere il
pezzi insieme quando si abbatte questo
sistema in contesti limitati che è
sembra essere un tema ricorrente che ha
stato discusso tutto il giorno sul
architetture traccia inoltre può aiutare
tu superi gli errori quando tu quando
ti stai integrando con cose che sono
non disponibile come sei e puoi
evitare la disponibilità di altre parti
problemi che ti vengono imposti, quindi è così
piuttosto carino e inoltre può essere usato
per rendere questi questi tipi di processi
che si verificano in questi messaggi basati
i sistemi li rendono espliciti e loro
creare un modello che ne modella uno specifico
elaborare in modo molto stretto ed esplicito
che penso sia davvero pulito, quindi spero
sei d’accordo con me sì e ora me ne vado
per finirlo molto velocemente e
come ho già detto, il rebus non è molto legato
a una missione MQ come tale può fare un casino
MQ fuori dalla scatola ma anche felicemente
utilizza rabbitmq e SEO service bus come a
strato di trasporto entrambi supportano il
stesse garanzie transazionali così che se
un messaggio fallisce può essere riportato a
la coda di origine e cose del genere e
quando invii molti messaggi lo faranno
o essere inviati tutti loro atomicamente o
non così ha lo stesso transazionale
proprietà quando usi rabbitmq
e anche il servizio di assistenza SEO
utilizzare sequel server come un trasporto quindi se
tutto quello che hai nel mondo è che è un
sequel server allora puoi ancora farlo
cosa di messaggistica quindi può installare
abbonamenti e saghe nel server sequel
e rave in DB e MongoDB usando a
database di documenti per memorizzare Sarah
Scelta davvero ovvia perché la saga
è solo un documento che puoi usare
questi contenitori ghiacciati da attivare
gestori e utilizzare diversi tipi di
i quadri di registrazione possono inviare messaggi
in patch in modo da poterne ottimizzare determinati
roba per l’overhead così anche se
hai dei piccoli messaggi nel tuo codice tu
può evitare l’overhead di inviare molti
piccoli messaggi quindi può farlo
gestire il pipeline riordinando così se tu
avere più gestori che gestiscono il
stessi messaggi e puoi dire ai fiumi di
invocare prima un gestore specifico in modo tale che tu
può usarlo per fare qualche esempio
di autorizzazione dei messaggi in arrivo
e quindi puoi fare la spedizione polimorfica
quale è un modo che puoi per esempio
faccio un gestisco i messaggi di oggetto e
allora riceverà tutti i messaggi così tu
possibile utilizzare l’ereditarietà e le interfacce su
messaggi e quindi utilizzare quelle interfacce
nei tuoi gestori allora può cifrare
amici del messaggio questo non è l’NSA
ottima crittografia per cui è più adatto
Voglio dire se vuoi inviare messaggi
intorno in organizzazione con buste paga
informazioni o qualche tipo di un po ‘
informazioni sensibili quindi puoi semplicemente
dire a rebus di crittografare il compagno di messaggi
e quindi non sarà immediatamente
visibile nelle tue code cosa c’è nel
messaggio e possono comprimere il messaggio
amici in modo da poter inviare abbastanza grandi
messaggi e sì forse chiamerò
rebus a100 a un certo punto non lo so
uno dei contributori Eska ha ragione
ora sto lavorando per avere questo centro
servizio di monitoraggio per rebus che tu
può iniziare da qualche parte e poi costruire
nella cosa centrale di monitoraggio lì
è un endpoint web che ti mostrerà tutti
i fiumi sono l’endpoint che sei
attualmente in esecuzione e tutti i fiumi
gli endpoint inviano periodicamente a
battito cardiaco a questo servizio centrale così tu
può avere un’ottima panoramica di cosa
sta correndo così quando hai se hai
un sacco di endpoint quindi è carino
pulito quindi il rebus in realtà ha già un
Gateway HT e HTTP che fornisce a
modo per inviare messaggi
da un luogo all’altro oltre il
internet per esempio in modo che tu possa essere onesto
facilmente proxy questo con un proxy HTTP
o qualcosa del genere in modo da poter fare
sicuro che i messaggi siano sicuri
trasferito ma questo permette ai fiumi di
confini trasversali per cui MSM fa la coda
l’esempio non funzionerebbe e quindi potrebbe
essere interessante aggiungere qualcosa in più
trasporti ma adesso sembra
nessuno ha davvero chiesto di più
della coda MSM e RabbitMQ e SEO
bus di servizio quindi forse ci sarà
trasporti supplementari in futuro e
allora dal momento che MSM q non fa concorrenza
i consumatori bene avrebbe senso
forse per creare un qualche tipo di
processo di distribuzione che verrà caricato
bilancia il tuo MSM punti percentuali del 3% ma
il servizio di assistenza SEO e RabbitMQ no
necessario che quindi se si vuole scalare la
elaborazione dei messaggi puoi semplicemente usare web
lmq e hanno più endpoint multipli
verificare con una coda se ho detto
qualcosa che suonava quello che suonava
fresco probabilmente è venuto da uno di questi
libri a cui ti incoraggio davvero
leggi se non l’hai già fatto e
allora anche tu potresti anche leggere
cosa avrebbero o Han e veloce
Giovani al nord e altre persone
stanno scrivendo che ne stanno facendo davvero
roba fresca con queste cose che il
Han è il ragazzo che ha creato questo servizio
progetto di bus le cui idee sono ancora così
sì e sì grazie per l’ascolto
prendendo l’autobus hippy per l’impresa
sono circa tre problemi che ho
vissuto come un nella mia vita come a
sviluppatore di software e ho intenzione di mostrare
una soluzione che penso sia piuttosto interessante
a questi problemi si il mio nome è Monte
laba e io sono uno sviluppatore di software in a
consulenza e software bi piuttosto interessanti
consulenza di sviluppo chiamata 80/60 e
e sono anche uno sviluppatore di software in a
la società ha chiamato un particolare software
sviluppa in realtà un prodotto concorrente
chiamato
In-service bus quindi è un po ‘pignolo
situazione per me ma ma sono ancora
permesso di lavorare su un rebus e io sono ancora
permesso di parlarne così è uno
beh, questo è quello che farò oggi
se hai domande o pensi
qualsiasi cosa dopo per favore scrivimi un
email o contattami su Twitter si questo
la presentazione sarà su I will start
fuori parlando di quello che penso il tuo
il problema è e con ciò intendo forse
in realtà posso dire che quello è il mio
problema in modo potrei essere protetta qui
ma nella mia vita come sviluppatore di software
hanno spesso incontrato questi tre
problemi che ho intenzione di parlare di
e li vedo risolti in molti problemi
modi in cui ho intenzione di parlare di come
come risolverlo in un modo migliore così
questa è la parte in cui presento la mia
progetto rebus che è un servizio dotnet
in realtà mi piace pensare solo a quello
come libreria di messaggistica e poi lo sono
andando a mostrarvi alcuni abbastanza concreti
esempi su come questi problemi possono essere
risolto sì e alcuni in seguito
Inizierò con alcune diapositive e
alcuni parlano e, dopo tutto questo
parlando sulla traccia di architettura I
penso che ci sia del vero codice di esecuzione live
posto
Ti mostrerò anche del codice
Spero che sia un passaggio, quindi cos’è
il tuo problema immagino che alcuni di
potresti essere alle prese con i sistemi
che sono sfidati perché hanno
diventare grande e continueranno
diventando sempre più grande di solito
inizia come devi costruirne alcuni
qualcosa di semplice e poi tuo
cliente o il tuo datore di lavoro vuole
qualcosa in più e poi lo aggiungi e
continui ad aggiungere cose al sistema
e finisci con questo enorme monolitico
mucchio di spaghetti quindi penso che questo abbia
praticamente stato un tema ricorrente su
la pista oggi, quindi ti mostrerò
dove un modo per forse attaccare questo
problema inoltre ho visto molti
problemi con l’integrazione con esterni
parti penso che sia stato Sam Newman che
menzionato il elytis questo problema con
integrazione con parti esterne che è
fondamentalmente un problema di disponibilità dove
i problemi di disponibilità di quelli
le parti esterne si sono imposte su di te così
se ho visto così tanti sistemi fallire
perché qualche parte esterna ha fallito o
non c’era, quindi ti mostrerò un
modo per gestire quello che ho visto
in molti sistemi la logica è molto complessa
è una specie di cose che stanno succedendo
accadono altre cose che fanno altro
succedono cose e poi forse il sistema
aspetta un po ‘e poi un po’
altre cose accadono di nuovo e di solito io
ho visto cose del genere implementarle
in un modo molto implicito e frammentato
possibilmente avere una piscina da qualche parte e un
intero in un altro luogo e insieme
queste cose in realtà compongono lo stato
di un qualche tipo di processo che sta succedendo
nel sistema ma è frammentato e
è che è implicita e diffusa in tutto
il sistema quindi ti mostrerò a
modo di
forse rendi questo un po ‘più concreto
si , per riassumere, stai lottando
con un monolite forse ne hai un po ‘
problemi di integrazione e hai
forse problema nel coordinare la tua logica
o ragionamento su quali processi sono
sta succedendo nel tuo sistema e una soluzione
qui sto dicendo dissoluzione ma non lo faccio
voglio essere così audace da affermare che questo
è la soluzione
Voglio dire forse domani scopriremo
un modo migliore per gestire queste cose ma
il modo migliore che conosco al
il momento di gestire queste cose è vicino
utilizzando la messaggistica in modi intelligenti e
se lo sei, solo così tutti sono chiari
su cosa intendo per messaggio intendo quando
vuoi eseguire una sorta di
operazione è possibile modellare tale operazione
come una porzione di dati che può essere persistente
da qualche parte e può essere consegnato a
da qualche altra parte quindi è semplicemente così
quello è messaggistica è solo la memorizzazione e
rappresentando operazioni come blocchi di
dati che possono essere scambiati e salvati
sì, ma per fare tutto questo
lavorare in questo messaggistica deve accadere per
usando durevoli code asincrone loro
doveva essere durevole in modo che quando inviamo un
messaggio da qualche parte possiamo vedere che questo
il messaggio viene salvato in modo che il messaggio sia giusto
importante come un pezzo di dati che noi
potrebbe voler memorizzare nel database così
è molto importante che questi messaggi
sono trattati con lo stesso con lo stesso
cura come i dati nel nostro database così
quindi dobbiamo usare un messaggio duraturo
code inoltre deve essere
asincrono in questo modo abbiamo questo a
modalità ignifuga per inviare messaggi
e in questo modo non bloccheremo mai
quando invii un messaggio così non lo faremo mai
attendere che qualche destinatario sia presente o
qualsiasi cosa del genere possiamo sempre contare
su essere in grado di consegnare per ottenere il nostro
messaggi inviati così se lo sono
effettivamente consegnato al destinatario
quello è
questa è un’altra storia e questa è gestita
da Q’s o qualunque si e altra rete
gli sviluppatori in fresco qui va bene e se
siete le probabili opportunità per gli sviluppatori
sei su cui stai facendo funzionare il tuo codice
Windows e poi sei fortunato perché
Windows da quando Windows 2000 ha avuto un
costruita nel asincrono spunto mancato durevole
ha chiamato una coda di messaggi Microsoft FQ mancante
che puoi abilitare mettendo un assegno
contrassegnare e rimuovere i componenti di Windows così
la loro azione in realtà è una coda che noi
può usare per costruire queste cose
pesciolini
quindi è bello, sì, e ora lo sono
parlare di rebus rebus è così
un bus di servizio aziendale ma penso
quando dico bus di servizi aziendali
o autobus servizio, allora la gente sarà
pensando come hanno le persone
esperienze con i bus di servizio e
ci sono un sacco di prodotti commerciali fuori
lì che si tratta di autobus di servizio ma
allora sì , per evitare intendo evitare
confusione e voglio solo dirtelo
quel rebus non è una cosa da grande broker o
una grande cosa centrale monolitica che può
fai tutto nel mondo e e
traduci i messaggi e integrali con
tutti i tipi di sistemi che non può fare
qualsiasi cosa come quel rebus è in realtà
solo una libreria di messaggistica è molto
semplice libreria di messaggistica che può aiutare
scambiate messaggi in modo intelligente
modi in modo che è fondamentalmente quindi è un
è uno strato sottile sopra un qualche tipo di
code e ho intenzione di mostrarti oggi
con MS MQ sotto e sì, così è
fondamentalmente
e inoltre mi piace chiamarlo a
autobus hippie ma questo è che è una sorta di a
per contrastare questo un colletto bianco e cravatta
cosa che la gente di solito pensa di quando
pensano agli autobus di servizio che mi piacciono
pensa a rebus come molto molto bello e
autobus rilassato
questo è molto indulgente ed è gratuito e
questo è un sacco di cose che sono una specie di a
hippie piace così e non lo è
capitalista in ogni modo sì e sì come
Ho detto che è una libreria di messaggistica e questo
siede lì come strato sopra un smq
e il nucleo di Reba è una singola lettera
fatto per diello scusa sei garantito
essere in grado di includere fiumi nel tuo
progetto e non ha alcun conflitto con
qualsiasi cosa e poi se vuoi
integrazione con il diverso
roba di terze parti allora può essere
raggiunto con il piccolo dedicato
progetti di integrazione, ad esempio
i fiumi possono effettivamente usare RabbitMQ così com’è
un trasporto di messaggi e può salvare cose
in diversi tipi di database e altro
la mia motivazione per la creazione di rebus
era con cui ho lavorato
Ho lavorato professionalmente con
autobus in servizio per un paio d’anni e
ma dopo un paio di anni che hanno portato avanti
il ragazzo che ha creato e servizio autobus lui
ha cambiato la licenza in modo da averla
pagare per utilizzare nel bus di servizio e
questo mi ha reso davvero triste perché davvero
così mi piace l’open source e gratis
software e quindi sì, inoltre, in servizio
l’autobus ha avuto alcuni problemi è stato davvero difficile
per ottenere questo è iniziato un – voglio dire che aveva
alcuni problemi con le frecce che potrebbe
genererebbe un’eccezione di riferimento null
nel mezzo di quando stavi invocando
l’ API di configurazione e cose simili
che quindi c’erano alcune cose che
mi ha davvero infastidito per il bus in servizio
quindi volevo utilizzare il trasporto di massa con
che è un altro pass di servizio gratuito
implementazione e quella rete ma io
in realtà non potrei farcela funzionare io
ha avuto due giorni in un cottage estivo in alcuni
point e II non sono riusciti a farlo funzionare
quindi forse controllerò il codice ad alcuni
sfortunato in alcuni momenti sfortunati o
qualcosa ma ho rinunciato alla messa
transito quindi volevo forchetta e
servizio di autobus da quando era ancora libero
ma il bus in servizio era come un 250 C
progetti taglienti e 60 mila linee di
codice ed è stato totalmente
al momento era un casino completo così um
in realtà essi hanno hanno ripulito un sacco
Voglio solo dirlo, ma al momento
la base di codice era davvero disordinata ed enorme
sì, quindi volevo creare un rebus
è sempre stato gratuito e lo sarà
continua ad esserlo e inoltre lo voglio
essere davvero facile e davvero una parte fondamentale di
cioè deve avere davvero impressionante
messaggi di errore così quando si ottiene un errore
messaggio in rebus non è non è un
schiaffo in faccia
è sempre un passo in avanti quindi ogni errore
messaggio in rebus ti spiegherà
esattamente ciò che è sbagliato in pedagogia
termini e poi lo suggerirà
qualche tipo di soluzione quindi per esempio se
se tu rebus puoi cifrare il messaggio
corpi quindi se si desidera configurare
crittografia e ti dimentichi di fornire il
chiave, quindi rebus genererà una chiave per
tu ed effettivamente digiti l’XML
puoi mettere nel tuo file di configurazione
quindi voglio solo fare cose del genere
è davvero facile in modo che sia facile
andare avanti e facile in realtà facile
superare tutte le cose del mietitore e
inizia a lavorare sul tuo codice reale e
risolvendo i tuoi veri problemi si, inoltre
Solo perché ho iniziato , uno sono io
volevo creare un rebus in un modo che tu
potrebbe iniziare a usarlo al
inizio di un progetto e poi ad alcuni
indica se il progetto è diventato più serio
e potresti garantire la licenza
costo di licenza si potrebbe facilmente portare tutto
quindi il tuo codice su un bus di servizio
in realtà tutte le api sono in rebus
rubato da un autobus di servizio quindi tutto il
le API che vedrai tranne da
la configurazione api tutte le altre
le API vengono rubate dal bus di servizio così
sì, adesso è abbastanza piccolo
progetto tremila settecento
linee di codice c-sharp il codice è attivo
github e ha contributi da 12
sviluppatori oltre a me quindi non sono il
solo uno
sviluppandolo e tu ti alzi e corri
con rebus usando nougat così
questo è fondamentalmente il modo in cui ottieni
ha iniziato a fare cose internet al giorno d’oggi
la versione corrente è chiamata 0:43
è un nome di versione piuttosto criptico e io
è stato spesso chiesto quando la versione 1o
sarà fuori ma non credo che lo faccia
ho molto senso intendo ad un certo punto
volevo creare una versione 1o perché
questo suona un po ‘ non ufficiale e
sembra una specie di alfa ma è stato rebus
spostare denaro dalla versione 0 14
alfa e qui ha controllato a
un paio di centrali elettriche dal 17 17 alfa
quindi, voglio dire, la versione è proprio così
solo un numero non significa niente
in modo che probabilmente non sarà mai uno oh
sì, ho intenzione di mostrarti un precedente
demo in a in pochi secondi ma prima di noi
iniziare ci sono solo alcune cose che sono
buono a sapere con rebus tutti i messaggi sono
pianura vecchio ancora i nostri oggetti così quando tu
vuoi creare un nuovo messaggio tipo tu
basta creare una classe e poi ci metti
alcuni campi se vuoi qualche dato
nel tuo messaggio e quindi istanze di
quella classe può essere inviata come messaggi e
nel rebus tutti gli endpoint hanno il loro
coda di input quindi la coda di input di rebus
endpoint è una sorta di ID del del
endpoint e quindi ogni tipo di messaggio è
di proprietà di un servizio logico in modo che
significa che per ogni tipo di messaggio che è
puoi entrare nel tuo in tutti i tuoi sistemi
associare sempre quel tipo di messaggio a uno
endpoint da qualche parte e quell’endpoint
sarà il proprietario di quel messaggio così così
in questo modo c’è una mappatura della proprietà
potresti dire e te lo mostrerò
che in pochi secondi sì e poi lo è
già tempo per la prima demo sì sì
speriamo che funzioni così ho un
soluzione semplice qui con due progetti a
client e un server entrambi
le nostre semplici applicazioni per console
non fare nulla al momento, quindi ora io
voglio ora voglio essere in grado di inviare
messaggi dal client al server
quindi per farlo installerò
rebus nel server e ora nel
server posso configurare e quindi I
fornire questo adattatore contenitore in rebus
rebus vuole sempre un qualche tipo di
adattatore contenitore che di solito è il
posto dove userai uno dei
aromi che esistono per il contenitore di ioc
che si sta utilizzando, perché avrebbe usato
questo adattatore contenitore per cercare
gestori di messaggi così che di solito è dove
si intende collegarsi in qualche modo al CIO
contenitore di tua scelta allora vai
trasportare questo fondamentalmente l’ avi sempre
inizia così e poi si può dot
e poi puoi scoprire tutto il
diverse opzioni di configurazione
disponibile qui così in questo modo l’API
l’API di configurazione ha questa scoperta
cosa sta succedendo e poi configuro il
trasportare per utilizzare la coda MSM e ottenere input
nome della coda dalla config dell’app che è a
un po ‘lungo e poi creo il
bus e avviarlo così ora lo farò
avere un autobus in funzione, ma il programma lo farà
esci immediatamente così per evitare
che andrò semplicemente premere INVIO per uscire
come questo l’ho detto per raccogliere l’input
nome della coda dalla config dell’app, quindi ho solo
devo fornire un po ‘di XML in
app config per dirgli quale coda di input
da usare lo faccio con questo rebus
sezione di configurazione che farò solo
rendi un po ‘più semplice per ridurlo
il rumore così fondamentalmente ciò che questo
dice che questo endpoint rebus ha un
coda di input chiamata server dot input quindi
ha una coda di errore chiamata error this
significa che se il
elaborazione dei messaggi dal server in ingresso
fallisce più di cinque volte di seguito
sposta il messaggio all’errore Q
quindi in questo modo rebus non perderà mai a
messaggio che non perderà mai a
messaggio in realtà lo farà sempre
sicuro che il messaggio se qualcosa va
l’errore viene riportato in coda da
da dove viene e poi se è così
fallisce troppe volte si sposta al
coda d’aria per evitare di negare il servizio al tuo
endpoint giusto quindi ora dovrei essere in grado
per avviare il server e ok ho ottenuto un
un paio di errori ora perché in realtà
sembra che ci fossero dei messaggi in
la coda per questo endpoint lo dice
non è stato possibile trovare alcun tipo di gestore
quattro messaggi di tipo system that string
così in realtà che c’era un paio di
stringhe nella coda di input di questo
endpoint quindi solo per dimostrare che non lo sono
mentendo posso iniziare questo molto semplice
MSM qq inspector e quindi puoi vedere
ora nella coda dell’era abbiamo i tre
stringhe da ora in poi così sono
seduto qui al sicuro e non se ne sono andati
va bene, creiamo un messaggio
gestore qui dentro di solito lo faresti
tu registreresti un messaggio magico
gestori nel tuo contenitore ioc ma da allora
sto usando questo contenitore dell’edificio
adattatore che è molto semplice lo farò solo
posso registrare gestori come questo lo farò
basta registrarsi un po ‘di tipo che dice rebus
può usare questo come gestore e
quindi trasformo questo in un gestore di messaggi
andando a gestire i messaggi di tipo
stringa questo questo mi costringerà a
implementare questo metodo chiamato gestire con
il tipo che ho specificato qui e in
questo server mi piacerebbe gestire
gli archi appena salutati hanno ricevuto un saluto
Messaggio
quindi riavvierò di nuovo il server sì
e lasciarlo in esecuzione, quindi creiamo il
cliente io installare il pacchetto di rebus
nel client configurerò oh
configurare l’adattatore del contenitore che farò
digli di usare un smq in un modo client
modalità in questo modo il client non avrà
la sua coda di input così sarà in grado
per inviare messaggi al server ma questo
non sarà in grado di ricevere nulla
indietro ma va bene e questa volta io
chiamerà questo messaggio come proprietà
che mi permetterà di dire ai lettori come
può determinare chi possiede i messaggi di a
dato il tipo e in questo caso lo dirò
per prenderlo dal rebus
sezione di configurazione quindi mi limiterò
fornire tale proprietà del messaggio
informazioni in un attimo e lo farò giusto
leggi un saluto qui scrivi un saluto
come questo e poi quando sto usando il
Buildin Adattatore contenitore Posso trovare il
bus l’ istanza del bus che è il
il risultato della chiamata di questa API sarà attivo
la privacy del bus così ho potuto prenderlo
come questo di solito se stai usando un gelido
contenitore si risolverebbe il bus AI
dal tuo contenitore e manderò semplicemente
questo saluto quindi nota come in
cliente qui non non mi preoccupo
chi riceverà questo messaggio io
Dì solo a rebus che voglio mandare questo
messaggio e poi i fiumi dovranno
capire dove spedirlo così è
tipo di dove il tipo di questo molto
lo strato bus molto semplice entra in gioco e loro
usa questa proprietà molto semplice
mappature per determinare dove il messaggio
dovrei andare così in questo caso provvederò
una sezione di configurazione del rebus qui
rimuovi tutto il perk in tuo favore e
quindi userò un unico endpoint
mappatura che è il modo in cui si mappa a
tipo di messaggio a un endpoint all’unica
endpoint in questo caso voglio mappare
sistema che stringa da un suggerimento di chiamata Miss
al punto di inserimento del server, come puoi vedere
questo è un modo molto molto semplice di
specificando che si tratta di messaggi di tipo
la stringa di sistema è di proprietà dell’endpoint
nascondendo dietro l’input di un servitore così ora io
dovrebbe essere in grado di avviare il client e
il client è in esecuzione e il server è
correndo e scusa ciao e ho preso il verde
così come puoi vedere ora posso inviarlo
messaggi dal client al server
e per dimostrare che nessun messaggio è stato perso
Ho queste tre corde nel mio arrack
io posso posso selezionare questi messaggi
e poi da quando rebus mette l’originale
la sorgente Q che è la Q dove questi
messaggi non riusciti come messaggio aggiuntivo
i fiumi di intestazione possono restituire questi messaggi
alla coda di salsa e in questo modo
consegnati i messaggi al server e
sì in questo modo
nessun messaggio è stato perso sì, quindi era a
demo molto breve che mostra quanto sia semplice
è per alzarsi e correre con
rebus così ora di nuovo al tre
problemi di cui ho parlato abbiamo parlato
su questo sistema che stava diventando troppo
grande e integrazione con esterno
parti e qualche logica complessa con
coordinamento e tempismo il primo
problema e ho una sorta di rubato il
impostazione dal lavoro in uno dei nostri
clienti al t60 in cui stiamo costruendo
questa piattaforma di trading sì, immagina
che stiamo costruendo una piattaforma di trading
dove sono i commercianti nel front office
accordi straordinari con le controparti e
poi un po ‘di personale amministrativo a
indietro
questo farà in modo che questi
le controparti sono a carico così noi abbiamo
abbiamo un’applicazione che può catturare
commercia e può fare la fatturazione così già
sembra che abbiamo un sistema che è
tipo di fare troppo e non lo è
davvero concentrato quindi voglio entrare in a
poche alcune delle cose che sono state
menzionato oggi e ma ho intenzione di aggiungere
distribuito a questo perché c’è
una sorta di un tipo di progettazione basata sul dominio
che ha questa T più nella parte anteriore, che è
dominio distribuito diverso guidato
design che più tardi
Penso che si sia evoluto in tutto questo CQRS e
la roba bidone di sourcing che sta succedendo
Internet al momento e ma la chiave
è che usiamo questo concetto di a
delimitazione delimitata contesto dalla principale
design della camera per catturare il
fatto che potremmo avere diversi
sottodomini nel nostro grande dominio così in questo
caso abbiamo questo un grande bene
dominio commerciale ma in realtà ci sono
due sottodomini in gioco qui abbiamo questo
dominio commerciale dove sono i commercianti
punzonare gli scambi nel sistema e noi
avere un dominio di fatturazione in cui alcune persone
di solito una volta al mese o qualcosa del genere
andrà e selezionerà un sacco di mestieri
e poi si assicureranno che il
le controparti sono fatturate sì sì
in questo caso nella prima demo lo farò
mostra come Reba può forse aiutarti
separa il tuo grande sistema in due
domini separati in modo diciamo solo fermare questo
ancora
questa è la demo 1 di questa demo ne ho due
due cartelle soluzione chiamate back office
e il front office in front office che ho
il servizio di trading qui che è a
semplice endpoint Reapers che lo farà
configurerà una memoria di sottoscrizione
questo significa che questo endpoint sarà
in grado di memorizzare gli abbonati che sarà
in grado di pubblicare messaggi a questi
abbonati così così in questo modo la lattina di Reba
ha questa implementazione di pubblicare
iscriviti che puoi usare e in questo
endpoint commerciale
Inserirò il nome di una controparte
e un importo e un prezzo e poi esso
pubblicherà questo nuovo trade registrato
evento nuovo commercio registrato è solo un
classe semplice che ho fatto in questo
scambiare messaggi di tipo assembly in questo modo
modo in fatturazione in questo modo può fatturazione
includere un riferimento al treno che
messaggi assembly e hanno accesso a
questo tipo di evento e fatturazione che è
possibile anche un semplice endpoint di Reba
iscriversi al nuovo commercio registrato
evento così quando lo avvia
stabilisce un abbonamento a questo evento
dal momento che l’editore ha utilizzato un
MongoDB come abbonamento lo memorizza
lo ricorderò per sempre così anche se io
riavviare l’editore o ucciderlo o
qualunque cosa io possa pensare, lo farà
sappi che questo abbonato esiste quando lo fa
si avvia di nuovo si e poi il
il sottoscrittore registra questo gestore chiamato
addebitare al cliente quale solo quale
gestisce questo nuovo evento del record commerciale e
stampa solo il messaggio
informazioni sulla console quindi proviamo
ed esegui questo che era fatturazione e
quello era il trading quindi ora quello che sto facendo trading
posso farlo
e
otterremo gli eventi pubblicati in questo modo
modo che puoi usare
pubblica / sottoscrivi messaggi tra i tuoi
applicazioni e loro saranno davvero dispiaciuti
c’era un errore
a quanto pare una stringa non è valida
numero Mi dispiace, basta toccare questo
uno di nuovo ho voluto smettere di fatturare I
voglio uccidere la costruzione e quindi pubblicare
alcuni eventi e come puoi vedere quando
l’edificio ricomincia a ricevere
questi eventi come se nulla fosse successo così
in questo modo possiamo avere una messaggistica affidabile
e questi sistemi saranno molto generici
accoppiato e non mi interessa se
sono entrambi lì allo stesso tempo così
questo è abbastanza carino del nostro secondo
il problema è l’integrazione con un esterno
festa nel nostro dominio commerciale qui abbiamo
abbiamo questo chiamato un nuovo dipartimento
ufficio centrale che deve confermare tutto
commercia quando sono fatti e loro
conferma questi scambi chiedendo a
servizio web di sapone esterno chiamato credito
valutazione e chiedendo se questo
il cliente è buono o no, quindi è molto
semplice servizio di valutazione del credito e
qui vogliamo che sia così asincrono
che non lo facciamo noi non aspettiamo il
risultato fondamentalmente così noi se la rete di sapone
il servizio è lento o se è giù il resto
del sistema continuerà solo
inoltre deve essere affidabile così noi
non dimenticherò mai quello che stavamo facendo in modo
se questo è il servizio web di sapone, non lo è
disponibile quindi è davvero importante
che farà sì che questa chiamata sarà ferma
passare attraverso quando diventa disponibile in
Per farlo useremo i rebus
tentativi automatici e ho appena fatto
questo molto semplice un diagramma di sequenza a
mostrarti cosa succederà ora
il commercio pubblicherà questo nuovo commercio
registrare l’evento che sarà ora lo sarebbe
essere sottoscritto da conferme
le conferme invieranno il credito
richieste di stato
a un servizio di integrazione questo
il servizio di integrazione è proprio molto
semplice rebus in punto cui unico
la responsabilità nel mondo è
ricevere questi ottenere stato creato
le richieste quindi rendono questo sapone esterno
chiamare quale è l’operazione non sicura e
quindi restituirà la risposta contenente
il risultato di questa chiamata e poi quando
ciò accade dove si trova questa risposta
ricevuto in conferma lo farà
pubblicare questo commercio confermato o uno scambio
evento rifiutato a seconda del risultato
si
quindi vediamo come possiamo creare una rete
chiamata di servizio utilizzando una facciata di messaggistica
facciamo demo – quindi ora ho lo stesso codice
come prima non è cambiato nulla tranne
Ho aggiunto questo mezzo a questa cosa
il middle office ha le conferme
servizio che era questo uno e poi
ha un paio di messaggi un paio di
eventi che può pubblicare e poi esso
ha questa cartella esterna contenente il
servizio di integrazione che è questo
e poi ho messo questo credito
valutazione sapone molto pericoloso che serve
qui dentro c’è qualcosa di molto subdolo
implementazione come puoi vedere
in realtà fallisce il 75% delle volte che tu
chiamalo e poi il 25% delle volte
userà la lunghezza del
nome della controparte per determinare se
è bravo o no quindi è un po ‘pazzo
implementazione in realtà ma il punto è
che fallisce quasi ogni volta che chiami
sì, in questo servizio di integrazione che ho
reso questo molto semplice che Handler
gestisce la richiesta di ottenere lo stato del credito
quello era questo e poi lo fa
chiama e restituisce la risposta a
chi ha inviato questo e questo può farlo
creando il cliente facendo il sapone
chiamata al servizio web e quindi utilizzando il bus
per rispondere così in questo modo l’autobus sarà solo
rispondi a chi ha inviato il messaggio
che stiamo attualmente gestendo
sì, l’ ultima cosa da mostrare è
conferme abbiamo la cosa che
invoca tutto questo
è il gestore dello stato del credito di controllo
questo servizio di conferma è stato sottoscritto
al nuovo evento registrato tratto e poi
ha questo gestore che gestisce il
rispondi quando mi maneggi il nuovo tratto
registrato userà solo l’autobus per
invia questo e poi l’autobus ha un
mappatura degli endpoint su questa mappa
richiesta dello stato di credito all’integrazione
servizio e quindi poiché siamo il mittente
di questa richiesta otterremo la risposta
e poi a seconda dello stato ci sarà
pubblicare un commercio confermato o commerciale
evento rifiutato, quindi proviamo a correre
questo così come puoi vederti oh quello era un
chiamata in attesa in una coda così ora il
il debugger più profondo è appena entrato nel
debugger qui ma sì niente veramente
è successo in realtà è ancora in esecuzione
di nuovo qui e vediamo solo se costruire
si sta nascondendo qui così ora abbiamo
commerciando qui abbiamo il nuovo
servizio di conferma scusa abbiamo il
servizio di conferma qui e abbiamo
il servizio di integrazione qui quindi tutto il
è tutto il logging grigio e giallo
va bene
il giallo è avvertimento quindi questo in realtà
non ha mai avuto frecce in modo uniforme
sebbene abbia ottenuto un’eccezione a causa di
il meccanismo automatico dei tentativi lo farà
riprovare fino a cinque volte si bloccherà
questo errore come avvertimento e poi
sembra che non ci sia il logging rosso
qui la chiamata sarebbe finita
attraverso così vediamo se possiamo farcela
fallire oh non potrei far fallire questo
sì no in realtà non voglio spendere
nel momento in cui questo fallisce, preferirò piuttosto
vedere se riesco a far fallire l’ ultima demo
perché è più importante lì ma
il punto importante è che le chiamate vanno
anche se ne ha un po ‘
disponibilità disponibilità piuttosto ovvia
i problemi
qui, sì , sì , il terzo problema dell’elica
era questo complesso coordinamento e tempismo
cosa così immagina ora che l’edificio
ha bisogno di caricare il cliente ma ma
questo processo può essere ottimizzato inviando
fuori una grande fattura se lo stato del credito
del cliente è buono ma ma se il
status di credito è male, allora vogliamo
inviare immediatamente la fattura per evitare
qualsiasi rischio sì sì in questo modo una fatturazione
sarà ora una volta questo nuovo record commerciale
l’evento è ricevuto, attenderà il
stato del credito e quindi a seconda di questo
stato del credito invierà la fattura
in un modo o nell’altro, quindi abbiamo questo
processo in corso ora per evitare
dimenticando di inviare queste fatture in
caso questo servizio web chiamato fallisce e
non restituisce mai alcuna risposta che vogliamo prendere
e una sorta di azione alternativa se
nulla è accaduto entro 10 secondi
questo è in realtà ciò che viene chiamato a
processo manager in letteratura che
è un servizio di stato che è una specie di a
macchina di stato all’interno di un servizio di cui
le transizioni sono innescate dai messaggi così
immagina questa macchina statale dove
tutte le transizioni sono attivate da
messaggi che è il gestore dei processi e
possiamo avere un numero qualsiasi di istanze di
questo di questa macchina statale allora vogliamo
per introdurre una sorta di timeout
concetto per permetterci di prendere un’alternativa
azione se questo processo non ha
completato entro 10 secondi e vogliamo
essere in grado di eseguire queste compensazioni
azioni che in questo caso sono molto
Semplicemente, vogliamo solo mandare una email se
nulla è successo così ora la sequenza
il diagramma sembra come questo trading
pubblicare il nuovo evento registrato commerciale
che andrà ad entrambe le conferme e
fatturazione a conferma abbiamo tutto
questa cosa del sapone in corso , ho appena colpito tutti
il servizio di integrazione in questo
il piccolo ciclo effettua la chiamata esterna così ha
un po ‘ di cose locali in corso
ma non dobbiamo preoccuparcene
a questo proposito con questa cosa di conferme
è finita pubblicherà il vassoio
evento evento confermato che terminerà il
processo nella fatturazione e quindi fatturazione può
fare la sua fatturazione nel modo desiderato
a ma per se se questo commercio
l’ evento confermato non arriva mai
allora questo processo continuerà
per vivere e poi ad un certo punto noi
voglio svegliare questo processo
quindi quindi nella fatturazione quando iniziamo
il processo invieremo un timeout
richiesta per un servizio di timeout di cui solo
la responsabilità nella vita è ricevere un
tempo non richiesto attendere il tempo che quello
è specificato in questa richiesta di timeout e
poi restituirà una risposta timeout dopo
quella volta così in questo modo possiamo ordinare a
richiesta di timeout una sorta di campanello d’allarme
dopo 10 secondi userà la fatturazione
che svegliarsi dopo 10 secondi
se il processo non ha completato si così
quello sarà demo 3 così ora ho
cambiato ho cambiato la fatturazione e io
scusarsi in anticipo perché questo codice
potrebbe sembrare un po ‘ pazzo quando tu
guardalo all’inizio, ma in realtà lo è
davvero semplice mi fidi ora del
gestore del messaggio nella fatturazione chiamato addebito
il cliente ora è il capo del servizio
piace chiamare una saga ma in realtà è così
solo questo è quello che viene chiamato un processo
manager in letteratura su
sistemi distribuiti così perché ha scelto di
chiamalo saga Non so che è una cosa
lui ha rubato dalla teoria dei database, credo
questo processo viene elaborato
di questa classe di dati della saga di fatturazione , quindi sono
Ho creato questa classe in grado di modellare
lo stato della mia macchina statale ma questo
processo sta succedendo e non nel mio stato
macchina voglio memorizzare l’ID commerciale e
la controparte
un nome e poi voglio memorizzare il
dettagli commerciali e il risultato del
valutazione del merito di credito
così e questi non sono in grado perché io
non voglio fare ipotesi su
l’ordine in cui questi pezzi di
le informazioni arrivano così quando ottengo il
dettagli commerciali che ricorderò quelli e
quando ottengo il risultato della valutazione del merito di credito
Lo ricorderò
e poi ho avuto questo modo di controllare
se ho ricevuto questi stati
e dettagli commerciali e posso usarlo
completare il processo
ora si dice che questa saga è scatenata da
i messaggi in arrivo, quindi devo devo
gestire tutti i diversi tipi di
messaggi che possono attivare le transizioni in
la mia macchina a stati in questo caso la uso
speciale Sono avviato dall’interfaccia
che in realtà è solo una derivazione di I
gestire i messaggi che aggiungono qualcosa in più
semantica perché perché lo consente
consente a rebus di creare una nuova saga se
quello esistente non può essere trovato per questo
messaggio in arrivo in questo modo la mia saga
il processo qui può effettivamente essere avviato
sia da questo evento, ma può anche essere
avviato dal commercio confermare e commerciare
eventi rifiutati e lo sto facendo
perché se questo nuovo commercio registrasse un evento
in qualche modo fallisce pur essendo trattati in
la fatturazione passerà alla coda dell’era
e quindi le probabilità sono che lo farò
ricevere il commercio confermato prima di me
ricevuto un nuovo commercio registrato o possibile
elaborare il nuovo commercio registrato
con successo nella fatturazione in questo modo io
può rendere il mio sistema robusto nei confronti di
ordine dei messaggi sì, qui dentro
la saga devo specificare quali campi
dovrebbe essere correlato
quindi per ogni messaggio in arrivo posso puntare
un campo nel messaggio e dirgli
che dovrebbe correlarlo con a
campo nei dati della saga quindi questa saga
istanza se lì se un nuovo arrivo
evento record commerciale se esiste a
istanza di saga con l’ID scambiato che
corrisponde all’ID commerciale dell’ingresso
messaggio allora quell’istanza sarà
caricato e sarà
disponibile a me diversamente da quando l’ho usato
questo Io sono iniziato da esso creerò un
nuova istanza della saga per questi
eventi sì, sto per andare a correre
questo codice molto velocemente sì il the
il codice sarà disponibile in seguito e
github in modo da poter controllare più tardi su
se tu se sei curioso da quando ho gestito
questo nuovo commercio lo registra e commercia
confermato e scambiato gli eventi rifiutati in
allo stesso modo che posso pianificare
verifica in tutti loro così è
il modo in cui ho gestito tutto questo in questo
metodo posso chiedere se la saga è nuova
se è nuovo, allora posso usare questo differimento
API in rebus per inviare un messaggio nel
futuro quindi posso inviare questa verifica
completare il messaggio entro dieci secondi
futuro così sotto questo copre
dirà bugie questo in a
richiesta di timeout inviarlo al timeout
manager che attenderà per 10 secondi
e poi lo restituirà in un timeout
rispondi e poi lo spaccheremo
verificare il messaggio completo e lo farà
tenta di inviarlo alla saga il
modo che ho specificato qui in questo modo
se la saga non è stata completata quando
questo messaggio arriva quindi possiamo scrivere
alcune informazioni alla console o
manda una mail o qualsiasi altra cosa vogliamo
si, ho intenzione di provare a farlo
uno e poi vedremo se se funziona
quindi ora voglio davvero fare questo
fallire perché poi puoi vedere il
timeout viene attivato così ho il
conferma e il servizio di scadenza
e poi facciamo un po ‘di trading ed è così
controllare i creditori ed è
completato proviamo ancora e ora esso
fallito quindi il messaggio viene spostato nel
cue errore
quindi il processo si è fermato e quindi
entro dieci secondi dovrebbe essere il processo
svegliato dal momento in cui rispondo e poi noi
può fare tutto ciò che vogliamo inviare una e-mail o
avvisare un amministratore o qualunque cosa
ha senso farlo in questo modo che possiamo
assicurati che questi anche se
i messaggi potrebbero fallire e potrebbero finire in
i nostri segnali lungo la strada e e questi
i processi potrebbero fermarsi, quindi possiamo riprendere
il processo e intraprendere azioni alternative
si, spero che abbia senso che tu possa
controlla il codice se è stato visto
strano sì, per riassumere lo penso
la messaggistica fornisce un modello per questo
possono davvero aiutarti ad includere il
pezzi insieme quando si abbatte questo
sistema in contesti limitati che è
sembra essere un tema ricorrente che ha
stato discusso tutto il giorno sul
architetture traccia inoltre può aiutare
tu superi gli errori quando tu quando
ti stai integrando con cose che sono
non disponibile come sei e puoi
evitare la disponibilità di altre parti
problemi che ti vengono imposti, quindi è così
piuttosto carino e inoltre può essere usato
per rendere questi questi tipi di processi
che si verificano in questi messaggi basati
i sistemi li rendono espliciti e loro
creare un modello che ne modella uno specifico
elaborare in modo molto stretto ed esplicito
che penso sia davvero pulito, quindi spero
sei d’accordo con me sì e ora me ne vado
per finirlo molto velocemente e
come ho già detto, il rebus non è molto legato
a una missione MQ come tale può fare un casino
MQ fuori dalla scatola ma anche felicemente
utilizza rabbitmq e SEO service bus come a
strato di trasporto entrambi supportano il
stesse garanzie transazionali così che se
un messaggio fallisce può essere riportato a
la coda di origine e cose del genere e
quando invii molti messaggi lo faranno
o essere inviati tutti loro atomicamente o
non così ha lo stesso transazionale
proprietà quando usi rabbitmq
e anche il servizio di assistenza SEO
utilizzare sequel server come un trasporto quindi se
tutto quello che hai nel mondo è che è un
sequel server allora puoi ancora farlo
cosa di messaggistica quindi può installare
abbonamenti e saghe nel server sequel
e rave in DB e MongoDB usando a
database di documenti per memorizzare Sarah
Scelta davvero ovvia perché la saga
è solo un documento che puoi usare
questi contenitori ghiacciati da attivare
gestori e utilizzare diversi tipi di
i quadri di registrazione possono inviare messaggi
in patch in modo da poterne ottimizzare determinati
roba per l’overhead così anche se
hai dei piccoli messaggi nel tuo codice tu
può evitare l’overhead di inviare molti
piccoli messaggi quindi può farlo
gestire il pipeline riordinando così se tu
avere più gestori che gestiscono il
stessi messaggi e puoi dire ai fiumi di
invocare prima un gestore specifico in modo tale che tu
può usarlo per fare qualche esempio
di autorizzazione dei messaggi in arrivo
e quindi puoi fare la spedizione polimorfica
quale è un modo che puoi per esempio
faccio un gestisco i messaggi di oggetto e
allora riceverà tutti i messaggi così tu
possibile utilizzare l’ereditarietà e le interfacce su
messaggi e quindi utilizzare quelle interfacce
nei tuoi gestori allora può cifrare
amici del messaggio questo non è l’NSA
ottima crittografia per cui è più adatto
Voglio dire se vuoi inviare messaggi
intorno in organizzazione con buste paga
informazioni o qualche tipo di un po ‘
informazioni sensibili quindi puoi semplicemente
dire a rebus di crittografare il compagno di messaggi
e quindi non sarà immediatamente
visibile nelle tue code cosa c’è nel
messaggio e possono comprimere il messaggio
amici in modo da poter inviare abbastanza grandi
messaggi e sì forse chiamerò
rebus a100 a un certo punto non lo so
uno dei contributori Eska ha ragione
ora sto lavorando per avere questo centro
servizio di monitoraggio per rebus che tu
può iniziare da qualche parte e poi costruire
nella cosa centrale di monitoraggio lì
è un endpoint web che ti mostrerà tutti
i fiumi sono l’endpoint che sei
attualmente in esecuzione e tutti i fiumi
gli endpoint inviano periodicamente a
battito cardiaco a questo servizio centrale così tu
può avere un’ottima panoramica di cosa
sta correndo così quando hai se hai
un sacco di endpoint quindi è carino
pulito quindi il rebus in realtà ha già un
Gateway HT e HTTP che fornisce a
modo per inviare messaggi
da un luogo all’altro oltre il
internet per esempio in modo che tu possa essere onesto
facilmente proxy questo con un proxy HTTP
o qualcosa del genere in modo da poter fare
sicuro che i messaggi siano sicuri
trasferito ma questo permette ai fiumi di
confini trasversali per cui MSM fa la coda
l’esempio non funzionerebbe e quindi potrebbe
essere interessante aggiungere qualcosa in più
trasporti ma adesso sembra
nessuno ha davvero chiesto di più
della coda MSM e RabbitMQ e SEO
bus di servizio quindi forse ci sarà
trasporti supplementari in futuro e
allora dal momento che MSM q non fa concorrenza
i consumatori bene avrebbe senso
forse per creare un qualche tipo di
processo di distribuzione che verrà caricato
bilancia il tuo MSM punti percentuali del 3% ma
il servizio di assistenza SEO e RabbitMQ no
necessario che quindi se si vuole scalare la
elaborazione dei messaggi puoi semplicemente usare web
lmq e hanno più endpoint multipli
verificare con una coda se ho detto
qualcosa che suonava quello che suonava
fresco probabilmente è venuto da uno di questi
libri a cui ti incoraggio davvero
leggi se non l’hai già fatto e
allora anche tu potresti anche leggere
cosa avrebbero o Han e veloce
Giovani al nord e altre persone
stanno scrivendo che ne stanno facendo davvero
roba fresca con queste cose che il
Han è il ragazzo che ha creato questo servizio
progetto di bus le cui idee sono ancora così
sì e sì grazie per l’ascolto
Please follow and like us: