Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn



Like dokumenter
Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Programvareutvikling hos Sun Microsystems. Jørgen Austvik Sun Microsystems Database Technology Group

Implementering av caching ved hjelp av Spring. Christian Vestøl

PRODUKTBESKRIVELSE. NRDB Nummerforespørsel

Tilstandsmaskiner med UML og Java

Fakultet for informasjonsteknologi, Løsning på kontinuasjon i TDT4190 Distribuerte systemer Onsdag 4. august 2004,

Oppsummering. Thomas Lohne Aanes Thomas Amble

CORBA Component Model (CCM)

Samtykker - er nå det så viktig? Nye regler fra 25. mai 2018 Lars Erik Ribe Anderssen (Personvernombud) og Thorkild Stray (Tech Lead GDPR)

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Distributed object architecture

Tor-Eirik Bakke Lunde

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...

Konfigurasjonsstyring

Technical Integration Architecture Teknisk integrasjonsarkitektur

Øyvind Horneland.

Forprosjektrapport. Sammendrag. Hovedoppgave våren 2019 Gruppe 3

Forord. Brukerveiledning

Stikkord: Java EE, EJB, JSF, JPA, SWT, klient/tjener, Glassfish server, Application Client.

Samhandlingsplattform

Løsningsforslag for Eksamen i TDT4190 Distribuerte systemer. Onsdag 23. mai

Identitetshåndtering og Single Sign-On (SSO)

Geosynkronisering. Nasjonale tjenester. Kommuner GeoNorge / andre portaler. Metadata. Visning. Nedlasting. Deltakende virskomhet. Geosynkronise ring

Programmeringsrammeverk som kan installeres på Windows Mobiloperativsystem

Android-Programmering. Vår 2017

DELLEVERANSE 1 INF2120 V06

Utfordringer til mellomvare: Multimedia

Fakultet for informasjonsteknologi, Løsning på kontinuasjonseksamen i TDT4190 / SIF8042 Distribuerte systemer August 2005,

J2EE. CMP Entity Beans, Transaksjoner, JSP

Fri programvare og 3.parts hosting

AlgDat 10. Forelesning 2. Gunnar Misund

Generiske mekanismer i statisk typede programmeringsspråk

Ole Tommy Lid-Strand. Født: 1979 Telefon: Seniorkonsulent. Integrasjonsspesialist Java-utvikler

November 2012 Stig Claussen, Senior Consultant Psiam. Infor 10 EAM

Læringsmål for forelesningen

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

Hovedprosjekt våren 2007

- analyse og implementasjon

Hvordan skal Brønnøysundregistrene innfri Altinn strategien? Håkon Olderbakk

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

AlgDat 12. Forelesning 2. Gunnar Misund

Systemarkitektur. INF1050: Gjennomgang, uke 07

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

Azure Stack. - når skyen blir lokal. Foredragsholder: Odd Egil Bergaust

INF2220: Forelesning 3

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Software Agenter med JADE. Jaran Nilsen javabin Sørlandet, Kristiansand, 8. januar 2009

Testing av Noark 5 uttrekk med kdrs-toolboxvalidator og innsyn med kdrs-toolbox-innsyn. Thomas Sødring HiOA

Automatisert Robusthetstesting. Erik Arisholm Testify AS

TTM4175 Hva er kommunikasjonsteknologi?

Få enda mer ut av SurveyXact. Fem nyttige opsjoner du bør kjenne til

e-forvaltning Altinndagen 2012 Nytt om Altinnløsningen for utviklere Lars Petter Svartis Løsningsarkitekt i AEI

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Oppgave 1. Sekvenser (20%)

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Computer Networks A. Tanenbaum

4.1. Kravspesifikasjon

NOARK Hva? Fra: Wikipedia, den frie encyklopedi

Stack. En enkel, lineær datastruktur

Testsituasjon Resultat Kommentar. Fungerer som det skal!

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Full kontroll med XML standardformat

Komponentarkitekturer. En historie om mellomvare

Tilbakemeldinger fra Skattedirektoratet v/sits på rapporten Metoder og standarder for tjenesteorientert arkitektur i offentlig sektor.

Fakturering etter

Test 2 OOP. - Prøveeksamen

Binær heap. En heap er et komplett binært tre:

Komponentarkitekturer

InfoRed Publisering. - produktbeskrivelse. TalkPool WebServices Postboks Åneby

2015 GLOBAL THREAT INTELLIGENCE REPORT SAMMENDRAG

KRAVSPESIFIKASJON DAGSPLANAPPLIKASJON FOR NETTBRETT. Gruppe 28 Hovedprosjekt våren 2015

Forprosjekt gruppe 13

PowerOffice Server Service

Overordnet beskrivelse

Programmeringsspråket C Del 3

Request for information (RFI) Integrasjonsplattform

Gruppe 11. Frank Petter Larsen Vegard Dehlen

PRODUKTBESKRIVELSE NRDB. NRDB Nummerforespørsel

Altinns nye tjenesteverksted. Lars Vegard Bachmann, produkteier portal og tjenester, Altinn

2. Beskrivelse av mulige prosjektoppgaver

Prosjekt Internasjonale standarder

Lumia med Windows Phone

Smart integrasjon i offentlig sektor

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Programmeringsspråket C Del 3

Personec Lønn Personec Lønn Pr

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Hvordan kan en gjenbrukbar NOARK kjerne bidra til samhandling mellom forvaltningsnivåene?

FÅ MER TID TIL DINE PASIENTER

Abaris-notat Teknisk beskrivelse av kodeverkskomponent for ICPC-2

Hva består Internett av?

Samhandlingsarkitektur i praksis

Applikasjonsutvikling med databaser

Scheduling og prosesshåndtering

Eksamen Objektorientert Programmering 2011

Programmeringsspråket C Del 3

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

HiOA TDK. Ingeniørfag data. DATS1600 Programutvikling. Eva Hadler Vihovde. Prosjektoppgaven Prosessdokumentasjon - Alternativ 1

Transkript:

Message Oriented Middleware (MOM) Thomas Filip Andresen Arild Berggren Eivind Bøhn

Agenda Hva er MOM? Hva er JMS? Hvordan kan MOM brukes i praksis?

Hva er MOM? Message Oriented Middleware Sende meldinger mellom komponenter ved hjelp av mellomvare Meldinger legges i køer, og komponentene prater med hverandre ved å skrive til og lese fra disse køene.

Hva er MOM? Kommunikasjonen er asynkron Meldinger kan køes opp, og prosesseres ved kapasitet Mottakerkomponenten trenger ikke være operativ i det meldingen blir sendt fra avsender. Køer kan være persistente Meldinger blir ikke tapt ved uforutsette hendelser Køer gjør distribusjon enklere Avsendere/mottakere/køer kan være plassert på forskjellige lokasjoner og plattformer Meldinger kan også kringkastes til flere mottakere

Ulemper ved MOM Meldingsutveksling er kun asynkron Mange systemer krever synkronisering Vanskelig å garantere leveringstid Økt overhead Spesielt ved persistente køer Flere komponenter gir økt kompleksitet Få standarder JMS i Java

Hva er JMS? Java Messaging Service Java sin spesifikasjon av MOM Et API for å sende meldinger mellom to eller flere komponenter Flere forskjellige implementasjoner Implementerer samme API, men noen gir tilleggsfunksjonalitet JBossMQ - en del av JBoss, open source ActiveMQ - open source SonicMQ - kommersiell Sun Java System Message Queue - kommersiell

JMS og køer JMS har to typer køer Queues Flere kan sende meldinger til en kø og en mottar meldingen (unicast). (Flere kan lytte på samme kø) Topics Flere kan sende meldinger til et topic og alle som lytter på topic et får meldingen (broadcasting) Køer kan være persistente Meldingene lagres normalt i en database

JMS har tre typer meldinger TextMessage Inneholder en tekst streng MapMessage Inneholder en rekke nøkkelord med tilhørende verdier (Map) ObjectMessage Inneholder et serialiserbart (Serializable) objekt

Hvordan definere en kø Dette er leverandøravhengig. I JBoss deployes en fil med navn ettellerannet-service.xml og med følgende innhold: <?xml version="1.0" encoding="utf-8"?> <server> <mbean code="org.jboss.mq.server.jmx.queue" name="jboss.mq.destination:service=queue, name=examplequeue"> <depends optional-attribute-name="destinationmanager"> jboss.mq:service=destinationmanager </depends> </mbean> </server>

Hvordan sende til en kø

Hvordan lytte på en kø

Fordeler/ulemper ved JMS Godt utbredt standard i Java-verdenen Mange implementasjoner å velge imellom Mye kode for å sende en melding til en kø Baserer seg på Casting -> Feil oppdages ved RunTime og ikke ved kompilering Jboss har foreslått en løsning på dette, som enda ikke er en del av standarden: http://docs.jboss.org/ejb3/appserver/tutorial/consumer/consumer.html

Hvordan kan MOM brukes i praksis? Scenario: SMS-tjenester

SMS-tjenester - tall og fakta Norge i verdenstoppen på SMS-forbruk 4 meldinger/person/dag ca. 150 meldinger/sekund i snitt Idol-finalen da Kurt Nilsen vant: 939 523 meldinger I USA mistes ca. 10% (2003) av alle tekstmeldinger Stort marked og mange operatører og standarder

SMS-tjenester: Karakteristika Asynkron meldingsflyt Ingen garanti for når meldingen kommer fram Distribuert arkitektur Mange systemer og parter involvert Store svingninger i trafikkvolum Nyttårsaften, Idol,... Viktig å ikke miste meldinger Selvangivelsen, bankoverføringer, autentisering, betaling

MOM i praksis

Fordeler ved å bruke MOM Kommunikasjonslaget ferdig utviklet Utvikler trenger kun å fokusere på logikken til komponentene Enkelt å håndtere en distribuert arkitektur God håndtering av topper i trafikkvolum Meldinger blir ikke borte ved uventet avbrudd Uavhengighet mellom komponenter Deler av systemet kan være midlertidig nede Mottakerkomponent trenger ikke være aktiv når avsender sender en melding Hot deploy Skalerbarhet

Ulemper ved å bruke MOM Mye overhead Hver eneste melding forårsaker databaseforespørsler ved persistente køer Vanskelig å garantere at meldinger blir levert innen en gitt tid