JMS allows applications to create, send, receive, and read messages. Using JMS, application can communicate with others loosely coupled, asynchronous, and reliable.
It is useful in the following use cases:
1) inventory component can send a message to factory component when inventory is low.
2) factory component can send a message to parts component to get parts assembled.
3) parts component can send message to inventory or supplied component to get parts ready.
4) factory and parts component can send message to accounting component to update their budget.
5) business component can update their info to sales force.
JMS architecture
1) A JMS provider (provided by Glassfish JEE container)
2) JMS clients (any JEE application component can be JMS client)
3) Messages (objects that communicate information beween JMS clients)
4) Administered objects (Connection factory and destinations)
Messaging domains
1) point-to-point domain contains queues, senders and receivers. each message has only one consumer. senders and receivers have no time-dependency. receivers will acknowledge the success of message processing.
2) publish-subscribe domain contains subscriber, publisher and topics. consumers subscribe to the topics they interested in. each message has multiple consumers. consumers and publishers are time-dependency relationships. consumers can only consume messages published after consumers' subscription.
Programming model
1) administered objects (provided by Glassfish): connection factory and destination.
2) connection factory( an object that clients used to connect to a jms provider)
Ex.
@Resource(lookup = "/jms/ConnectionFactory")
private static ConnectionFactory connectionFactory;
3) destination
Ex.
@Resource(looku="/jms/Queue")
private static Queue queue;
4) connections
Ex.
Connection connection = connectionFactory.createConnection();
5) sessions: sessions are used to create producers, consumers, messages, and queue browsers.
Ex.
Session session = connection.createSession(transactionType, session.Auto_acknowledge);
6) message producers
Ex.
MessageProducer producer = session.createProducer(dest);
7) message receivers
Ex.
MessageConsumer consumer = session.createConsumer(dest);
8) message listener
Ex.
Listener myListener = new Listener();
consumer.setMessageListener(myListerner);
9) messages (header, property and body)
MessageType: TextMessage (String object), MapMessage(name-value pairs), BytesMessage(undefined bytes), StreamMessage(primitive value stream), ObjectMessage (serializable object), Message(without body).
10) Queue Browser
Ex. QueueBrowser browser = session.createBrowser(queue);
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment