Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.

...

Camel implementerar ett så kallat domän specifikt språk DSL. Detta används för att styra dataflödet data flödet mellan olika processer. Vilket görs genom att man skapar upp en eller flera flöden , kallade Routes , i en Routebilder.

Dessa Route:s kan i sin tur ha olika in och utgångar eller vara sammankopplade. Detta gör att det är enkelt att skriva kod där varje steg i processen kan skrivas av en enskild klass med en specifik uppgift. Dessa steg kan sedan relativt enkelt kopplas samman i flöden som är enkla att överblicka och följa. Det gör det även enkelt att lägga till eller dra ifrån steg i processen, skapa undantag och vägval efter behov och / eller återanvända flera steg i en process genom att skapa en specifik Route för dessa.

Med de positiva superlativen om Camel så kan det vara värt att notera att det är lätt att , som ny användare av ramverket , förväxla en Route - konfigurering med kod som exekveras (it walks and talks like a duck). Det här är för det mesta inget problem men är värt att ha i bakhuvudet.

Flödesdiagrammet mappar ganska väl med de Routes som skapas upp i klassen VPRouter. Den klassen är en väldigt bra ingång, för att få en överblick över VP och man kan mycket väl hävda att den på sätt och vis bättre beskriver flödet än diagrammet.

För att flytta data mellan process - stegen används ett Exchange objekt. Detta är en realisering av konceptet Message exchange pattern vilket vi känner igen från t.ex. Rest SOAP etc. Som nämnts kan en Route börja i lite av varje men i VP:s fall kommer Exchange objektet att emanera från web-socket och den komponent vi använder för detta kommer att stoppa in payloaden (SOAP meddelandet) i attributet In,Body, headrar i In.Headers etc. o.s.v.

...

I praktiken jobbar de olika stegen i VP i huvudsak med tre attribut i Exchangeattributen: In.Body (Soap meddelandet)

...

, In.Headers för att läsa headers som kommit in och lägga till headers som behöver läggas till åt Producenten

...

, samt Propertys vilka ligger direkt på Exchangen

...

och används för att överföra data mellan de olika stegen i flödet.

En annan egenhet är att strömmad data kan realiseras lite olika. I VP:s fall så är bodyn direkt ur lådan ett läs-en-gång attribut. Vilket man får anta har att göra med att om det är stora meddelande vill man kunna läsa dessa rad för rad. Vi har kringgått detta genom att slå på streamCaching.