Java Module 5 Jms

Embed Size (px)

Citation preview

  • 7/29/2019 Java Module 5 Jms

    1/38

    Ove

    rview

    Describetheconceptsand

    somepracticalapplications

    ofmessaging.

    Describetheconceptsand

    basicstructureofJ

    MS.

    WritesimpleJMSmessaging

    codeusingthepublishand

    subscribeandpoint-to-point

    domains.

    DiscussadvancedJ

    MSissues

    suchasguaranteed

    messaging,transactions,

    reliability,andrecovery.

  • 7/29/2019 Java Module 5 Jms

    2/38

    Par

    t1:

    Ente

    rpriseM

    essaging

    an

    dJMS

  • 7/29/2019 Java Module 5 Jms

    3/38

    Enterpr

    isemessaging

    Message-

    Oriented

    Middlewar

    e

    ApplicationA

    MessagingAPI

    M

    essagingClients

    ApplicationB

    MessagingAPI

    Messa

    gingClients

  • 7/29/2019 Java Module 5 Jms

    4/38

    T

    ightlyCoupledRPC

    Business

    ApplicationA

    RPC

    Client/Server

    Business

    ApplicationD

    RPC

    Client/Server

    Business

    Applica

    tionB

    RPC

    Client/Server

    Business

    Applic

    ationC

    RPC

    Client/S

    erver

    Requiresn*(n

    -1)/2

    connections

  • 7/29/2019 Java Module 5 Jms

    5/38

    JMS

    messaging

    JMS

    Client

    Message

    Server

    JMS

    Client

    JMS

    Client

    JMS

    Client

    JMS

    Client

    JMS

    C

    lient

    JMS

    Client

    Local"server"

    JMS

    Client

    Local"server"

    JMS

    Client

    Local"server"

    JMS

    Client

    Application

    A

    Local"serv

    er"

    Applic

    ationB

    ApplicationC

    ApplicationD

    Router

    Decentralizedmessagese

    rver

    (IPmu

    lticast)

    Centralizedm

    essageserver

    (hubandspo

    ke)

  • 7/29/2019 Java Module 5 Jms

    6/38

    TheJ2E

    Eplatform C

    lient

    Application

    JMS

    Server

    EJB

    Container

    Web

    Container

    Application

    Client

    Container

    JDBC

    D

    atabase

    J2EEPlatform

  • 7/29/2019 Java Module 5 Jms

    7/38

    Pa

    rt2:

    JMSConce

    ptsand

    C

    oding

  • 7/29/2019 Java Module 5 Jms

    8/38

    Wholes

    alerandretailer

    Message

    Server

    Wholesale

    r

    Retailer1

    Retailer2

    Updateprice

    (publish)

    Orderproduct

    (send)

  • 7/29/2019 Java Module 5 Jms

    9/38

    JMSfeatures

    StandardJavaAPI

    Messag

    edeliverymodes

    Twomessagingmodels

    Transactions

    Reliabilitylevels

    Persistentmessaging

  • 7/29/2019 Java Module 5 Jms

    10/38

    JMSmessagingdomain

    s

    Publishandsubscribe

    Manyco

    nsumersperme

    ssage

    Point-to-point

    Oneconsumerpermessage

  • 7/29/2019 Java Module 5 Jms

    11/38

    m

    anagement

    Publish

    er

    Publish

    er

    Subscr

    iber

    Subscr

    iber

    Topic

    Topic

  • 7/29/2019 Java Module 5 Jms

    12/38

    --

    GoodsShipped

    GoodsShipped

    Queue

    NeedSupplies

    NeedSupplies

    Send

    er

    Receiver

  • 7/29/2019 Java Module 5 Jms

    13/38

    JM

    Scomponents

    Message

    Server

    Message

    Message

    Destination

    JMSClient

    Connection

    Session

    Producer

    JMSClient

    Con

    nection

    Session

    Consumer

  • 7/29/2019 Java Module 5 Jms

    14/38

    Con

    nectionsandsessions

    A

    connectioncon

    nects

    toamessageserv

    er.

    Y

    oucancreateoneor

    m

    oresessionswi

    thina

    connection.

    JMSClient

    Connection

    Session

    Session

    Session

  • 7/29/2019 Java Module 5 Jms

    15/38

    Creatingconnection

    sandsessions

    Message

    S

    erver

    JND

    IStore

    JMSClient

    Connection

    Session

    Session

    Session

    ConnectionFacto

    ry

    create

    ConnectionFactories

    Destinations

  • 7/29/2019 Java Module 5 Jms

    16/38

    JM

    Smessagetypes

    As

    tream

    ofun

    inte

    rpre

    tedby

    tes

    Bytes

    Message

    As

    tream

    ofJavap

    rim

    itives

    Stream

    Message

    Ase

    to

    fname

    /valu

    epa

    irsw

    hereva

    lues

    are

    Java

    prim

    itives

    Ma

    pMessage

    Aseria

    liza

    bleJava

    objec

    t

    Ob

    jec

    tMessage

    As

    tan

    dard

    Javas

    tring

    Tex

    tMessage

    No

    bo

    dy

    Me

    ssage

    Message

    bo

    dy

    Me

    ssage

    type

  • 7/29/2019 Java Module 5 Jms

    17/38

    Creatingamessage

    createStreamMessa

    ge(

    );

    StreamMessage

    TopicSession

    cr

    eateTextMessage(

    );

    TextMessage

    Qu

    eueSession

  • 7/29/2019 Java Module 5 Jms

    18/38

    JM

    Smessagehead

    ers

    A

    utoma

    tica

    lly

    ass

    igne

    dhea

    ders

    JMSDes

    tina

    tion

    JMSDe

    livery

    Mo

    de

    JMSMessageID

    JMSTimes

    tamp

    JMSExp

    ira

    tion

    JMSRe

    de

    livere

    d

    JMSPriori

    ty

    D

    eve

    loper-ass

    igne

    d

    h

    ea

    ders

    JMSRep

    lyTo

    JMSCorre

    lation

    ID

    JMSType

  • 7/29/2019 Java Module 5 Jms

    19/38

    Producers

    ,consumers,anddestinations

    Message

    Server

    Se

    nd

    message

    Consume

    message

    Destination

    Producer

    Bind

    to

    destination

    Cons

    umer

    Read

    message

    Bindto

    destination

  • 7/29/2019 Java Module 5 Jms

    20/38

    Creatingd

    estinations

    M

    essage

    Server

    JND

    IStore

    JMSClien

    t

    Topic

    Queue

    ConnectionFactories

    Destinations

    lookup

  • 7/29/2019 Java Module 5 Jms

    21/38

    Pro

    ducingamessage

    createmessage

    producem

    essage

    Session

    Mes

    sageProducer

    Messa

    ge

    De

    stination

    create

  • 7/29/2019 Java Module 5 Jms

    22/38

    Consumingmessag

    es

    Incomingmessages

    MessageListener

    onMessage(m

    essage);

    Message

    Serv

    er

    acknowledge

    MessageCo

    nsumer

    Message

    rec

    eive();

    Incomingmessages

    acknowledge

  • 7/29/2019 Java Module 5 Jms

    23/38

    Asynchronousmes

    sagedelivery

    Incomingmessages

    MessageListener

    onMessage(message);

    Message

    Serv

    er

    acknowledge

  • 7/29/2019 Java Module 5 Jms

    24/38

    Usingreceive()

    Incomingmessages

    MessageCon

    sumer

    Message

    receive();

    Message

    Serv

    er

    acknowledge

  • 7/29/2019 Java Module 5 Jms

    25/38

    Filteringwithmessageselector

    Message

    Server

    Publisher

    Departments.Sales

    Subscriber

    Departm

    ents.Sales

    Pipeline

    >15000

    JMSPriority=2

    Pipeline=20000

    delive

    red

    Subscriber

    Departments.Sales

    JMSPriority>5

    not

    delivered

    Subscriber

    D

    epartments.Sales

    JMSPriority>=2ANDPipeline>10000

    delivered

    Sub

    scriber

    Depar

    tments.Sales

    Pipeline>20000

    not

    delivered

  • 7/29/2019 Java Module 5 Jms

    26/38

    Browsingaqueue

    nextElement();

    QueueBrowser

    g

    etEnumeration

    ();

    Message1

    Message2

    Message3

    Message4

    Enumeration

  • 7/29/2019 Java Module 5 Jms

    27/38

    Accessingmessagecontent

    Message

    TextMessage

    MapMessage

    ObjectMessage

    StreamMessage

    BytesMessage

    getText();

    getObject();

    get(Name);

    read();

  • 7/29/2019 Java Module 5 Jms

    28/38

    Part

    3:

    Guar

    an

    teed

    messag

    ing

  • 7/29/2019 Java Module 5 Jms

    29/38

    Guar

    anteeingmessag

    edelivery

    Durable

    Subs

    criber

    Or

    QueueReceiver

    Producer

    Message

    Server

    PERSISTENTmessage

    Persistentstore

    Messag

    eremoved

    afteracknowledgment

    Acknowledge

    message

  • 7/29/2019 Java Module 5 Jms

    30/38

    Persistentandnon-

    persistentmessages

    Message

    Server

    Persistentstore

    Non-persiste

    ntmessage

    notguarante

    edto

    surviveprov

    iderfailure

    Persistentmessage

    guaran

    teedtosurvive

    providerfailure

  • 7/29/2019 Java Module 5 Jms

    31/38

    Acknowledgement

    modes

    AUTO

    CLIENT

    DUPS_O

    K

    Igotanother

    message!

    Itmightbeeasyfor

    youtotellmethat

    foreverymessage,

    butyouareu

    singa

    lotofbandwidth.

    Ireceivedall

    me

    ssagesup

    tothispoint.

    Wherehaveyoubeen?I

    havebeen

    waitingto

    delete50m

    essages.

    Consume

    r

    Server

    Whenyouarelazylike

    this,Imighthaveto

    deliversomemessage

    s

    morethanonce.

    Okay,Imightseem

    lazyto

    you,butitisnotim

    portantto

    meiftherearesom

    eduplicates.

  • 7/29/2019 Java Module 5 Jms

    32/38

    Du

    rablesubscribers

    Durable

    Subs

    criber1

    (connected)

    Publisher

    Message

    Server

    PER

    SISTENTmessage

    Persistentstore

    Undeliveredmessages

    deliveredtoSubscriber2

    whenreconnected

    Durable

    Subs

    criber2

    (n

    ot

    conn

    ected)

  • 7/29/2019 Java Module 5 Jms

    33/38

    Redeliv

    eredmessages

    Beforemessageserverreceivesackn

    owledgement:

    Mes

    sageserverhas

    failedandrestar

    ted

    OR

    Con

    sumerhasfailed

    andrestarted C

    onsumer

    Message

    Server

    JMSRedeliv

    ered=true

  • 7/29/2019 Java Module 5 Jms

    34/38

    Part

    4:

    Transac

    tionsan

    drecov

    ery

  • 7/29/2019 Java Module 5 Jms

    35/38

    Tra

    nsactedsession:Producer

    Pr

    oducer

    Message

    Server

    Cons

    umer

    Be

    forecommit(

    )

    Uponcomm

    it()

    Message

    Server

    Tra

    nsacted

    s

    ession

  • 7/29/2019 Java Module 5 Jms

    36/38

    Tra

    nsactedsession:Consumer

    Message

    Server

    Consumer

    Beforecommit()

    Up

    oncommit()

    Message

    Serve

    r

    Consum

    er

    1

    2

    Delivermessages

    Consume

    messages

    1

    2

    Acknowled

    ge

    messages

    Delete

    messagesifall

    recipien

    tshave

    acknowledged

  • 7/29/2019 Java Module 5 Jms

    37/38

    Distribute

    dtransactionsupport

    M

    essage

    Server

    JND

    IStore

    JMSClient

    XAConnection

    XASession

    XASession

    XASession

    XAConnectionFactory

    create

    ConnectionFactories

    Destinations

  • 7/29/2019 Java Module 5 Jms

    38/38

    Recoverin

    gfromalost

    connection

    Clientru

    ntime

    Messa

    ge

    Server

    Excep

    tionListener

    onExc

    eption()

    Reconnec

    t