Upload
dsunte-wilson
View
232
Download
0
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