Title: JORAM Java Open Reliable Asynchronous Messaging
1JORAMJava Open Reliable Asynchronous Messaging
2Introduction
- JORAM implémente la norme JMS via la plate-forme
SCALAGENT - JMS normalise laccès des programmes Java aux
middlewares à messages (Message Oriented
Middleware) - Les MOM permettent lintégration dapplications
hétérogènes et indépendantes
3Message Oriented Middleware (MOM)
- Modèle de communication entre logiciels
- Intégration de modules hétérogènes distribués
- Indépendance (asynchronisme)
- Fiabilité
4Principe de base des MOM
- Message Queueing
- Queues de messages persistantes
- Transmission des messages asynchrone (stockage
des messages si nécessaire) - Reprise après panne
- Un émetteur remet son message au système et peut
continuer son exécution sans se soucier de létat
du destinataire
5Caractéristiques des MOM
- Modes de communication
- Point-à -point (PTP) émetteur, récepteur et queue
- Publication/Souscription (Pub/Sub) émetteur,
abonné et nœud - Modèle de programmation
- Réception explicite / implicite
- Messages
- Messages dotés dattributs et de propriétés
- Priorités, garantie de délivrance
6Linterface Java Message Service (JMS)
- API Java daccès uniforme aux systèmes de
messagerie
7Le mode Point-Ã -Point (PTP)
QueueConnectionFactory connectionFactory
(QueueConnectionFactory) messaging.lookup("") Qu
eue queue (Queue) messaging.lookup("") QueueCo
nnection connection connectionFactory.createQueu
eConnection() QueueSession session
connection.createQueueSession()
TextMessage msg session.createTextMessage() msg
.setText("") sender.send(msg)
QueueSender sender session.createSender(queue)
TextMessage msg (TextMessage)
receiver.receive()
String selector new String("(name 'Bull') or
(name 'IBM'))") QueueReceiver receiver
session.createReceiver(queue, selector)
8Mode Publication / Souscription (Pub/Sub)
Emetteur
Destinataire
TopicConnectionFactory
Topic
A
B
x
y
TopicConnectionFactory connectionFactory
(TopicConnectionFactory) messaging.lookup("") To
pic topic (Topic) messaging.lookup("/A/x") Topi
cConnection connection connectionFactory.createT
opicConnection() TopicSession session
connection.createTopicSession(false,
Session.CLIENT_ACKNOWLEDGE)
TopicPublisher publisher session.createPublisher
(topic)
onMessage
publisher.publish(msg)
void onMessage(Message msg) throws JMSException
// unpack and handle the message
TopicSubscriber subscriber session.createSubscri
ber(topic) Subscriber.setMessageListener(listener
)
9La plate-forme SCALAGENT
- Bus logiciel à base dagents communicants
- Agents objets réactifs
- Persistants
- Légers infrastructure dexécution partagée au
sein dun serveur dagents - Modèle événement / réaction asynchrone
- Événement changement détat
- significatif du système auquel
- un ou plusieurs agents réagissent
- Événement ? Notification
- Réaction ? fonction dans la classe
- Agent
Channel
10Larchitecture distribuée SCALAGENT
- Infrastructure basée sur un bus à messages
- Acheminement des notifications
- Exécution de la réaction du destinataire
- Distribution forte interconnexion des bus locaux
Agent
Agent
Agent
Agent
SendTo
React
Channel
Engine
Channel
Engine
Server A
Server B
mq
mq
11Les propriétés de la plate-forme
- Persistance
- Sauvegarde des agents et notifications
- Atomicité
- Cohérence garantie par un moniteur transactionnel
- Persistance Atomicité Fiabilité
- Une notification est délivrée une et une seule
fois - Ordonnancement causal
- Les notification sont délivrées
- selon un ordre causal
12JORAM
- JORAM est linterface JMS du MOM SCALAGENT
- Les queues et topics sont des agents
- Les messages sont encapsulés dans des
notifications - Délivrance asynchrone
- Garantie de délivrance
- Reprise après panne
- Apports de linfrastructure à agents
- Architecture totalement distribuée
- Scalabilité
13JMS via le MOM Scalagent
Message JMS
MOM Scalagent
Client 1
Agent Proxy
Connexion TCP
Notification
Agent Queue
Clients JMS
queue
Notification
Agent Proxy
Connexion TCP
Client 2
Message JMS
14Intégration dans JOnAS
- JORAM implémente la partie ASF (Application
Server Facilities) de la spéc. JMS - Intégration de JORAM en tant que ressource dans
un environnement transactionnel distribué tel
quun serveur EJB - Envoi et réception de messages dans des
transactions gérées par le serveur EJB - Réception asynchrone via les  Message-driven
BeansÂ
15Points forts de JORAM
- Architecture distribuée
- Facilité de mise en oeuvre
- Passage à léchelle
- Implémentation complète des  Application Server
Facilities - Intégration au serveur EJB JOnAS