Your SlideShare is downloading. ×
0
JMSPrepared by: Andrey Stelmashenko
What is JMS?●   A specification that describes a common way for Java    programs to create, send, receive and read distrib...
Goals●   Provide a single, unified message API●   Minimize knowledge needed for programmers    needed to write clients●   ...
JMS Application
JMS Concepts●   Connection factory●   Connection●   Session●   Message producer●   Destination●   Message consumer●   Mess...
Responsibilities    Client side:                            JMS Provider:●   Message producer                        ●   C...
Example
Message producer
@Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destinatio...
@Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;
@Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destinatio...
@Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destinatio...
Message consumer
@Resource(name = "jmsPool2")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destinatio...
@Resource(name = "jmsPool2")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destinatio...
Where are Connection Factory and          Destination?
JMS ApplicationA JMS application is composed of the following parts:• JMS Clients - These are the Java language programs t...
Administered objectsTwo types of JMS administered objects:• ConnectionFactory - This is the object a clientuses to create ...
JMS Administration
DomainsThere are two models of interaction:●   In the point-to-point (or PTP) messaging    model, each message is delivere...
PTP
Pub / Sub
PTP and Pub/Sub Interfaces
Session●   A session is a single-threaded context for    producing and consuming messages.●   Sessions are the JMS entity ...
Messages    Composed of:●   Header    used by both clients and providers to identify and route messages●   Properties     ...
Message Header Properties
Message Selection●   By headers and properties    not delivered differ a bit depending on the MessageConsumer●   Based on ...
Message Types ●   StreamMessage ●   MapMessage ●   TextMessage ●   ObjectMessage ●   BytesMessage
Message Acknowledgmnent    Acknowledgment handled automatically if session is transacted.    Other way three types:●   DUP...
Delivery Mode●   NON_PERSISTENT    delivers at-most-once. Msg may be losed.●   PERSISTENT    once-and-only-once. Msg must ...
Message Scheduling
Message Scheduling●   No message scheduling in specification!
Apache ActiveMQActiveMQ from version 5.4 has an optional persistent scheduler built into the ActiveMQmessage broker. It is...
ActiveMQ ExampleMessageProducer producer = session.createProducer(destination);TextMessage message = session.createTextMes...
Questions
Jms
Jms
Upcoming SlideShare
Loading in...5
×

Jms

460

Published on

Short presentation of JMS features and concepts.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
460
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Jms"

  1. 1. JMSPrepared by: Andrey Stelmashenko
  2. 2. What is JMS?● A specification that describes a common way for Java programs to create, send, receive and read distributed enterprise messages;● loosely coupled communication;● Asynchronous messaging;● Reliable delivery; – A message is guaranteed to be delivered once and only once.● Outside the specification – Security services – Management services
  3. 3. Goals● Provide a single, unified message API● Minimize knowledge needed for programmers needed to write clients● Utilize concepts of message exchange applications● Simplify portability of JMS clients
  4. 4. JMS Application
  5. 5. JMS Concepts● Connection factory● Connection● Session● Message producer● Destination● Message consumer● Message
  6. 6. Responsibilities Client side: JMS Provider:● Message producer ● Connection factory● Message consumer ● Connection● Message ● Destination● Session
  7. 7. Example
  8. 8. Message producer
  9. 9. @Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destination dest;@Override protected void doGet(...) { Connection connection = null; MessageProducer producer = null; try { connection = connectionFactory.createConnection(); Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); producer = session.createProducer(dest); TextMessage message = session.createTextMessage(); message.setText("Hello, JMS!!!"); producer.send(message); } catch (JMSException e) {...} try { connection.close(); } catch (JMSException e) {...} ...
  10. 10. @Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;
  11. 11. @Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destination dest;
  12. 12. @Resource(name = "jmsPool1")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destination dest;@Override protected void doGet(...) { Connection connection = null; MessageProducer producer = null; try {1 connection = connectionFactory.createConnection();2 Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);3 producer = session.createProducer(dest);4 TextMessage message = session.createTextMessage();5 message.setText("Hello, JMS!!!");6 producer.send(message); } catch (JMSException e) {...} try { connection.close(); } catch (JMSException e) {...} ...
  13. 13. Message consumer
  14. 14. @Resource(name = "jmsPool2")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destination dest;
  15. 15. @Resource(name = "jmsPool2")private ConnectionFactory connectionFactory;@Resource(name = "jndiJmsDest1")private Destination dest;@Override protected void doGet(...) { Connection connection = null; Session session = null; MessageConsumer consumer = null; TextMessage message = null; try {1 connection = connectionFactory.createConnection();2 session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);3 consumer = session.createConsumer(dest);4 connection.start();5 Message m = consumer.receive();6 message = (TextMessage) m;7 LOG.info("Msg: " + message.getText()); } catch (JMSException e) {…} finally { connection.close(); } ...
  16. 16. Where are Connection Factory and Destination?
  17. 17. JMS ApplicationA JMS application is composed of the following parts:• JMS Clients - These are the Java language programs that sendand receive messages.• Non-JMS Clients.• Messages - Each application defines a set of messages that areused to communicate information between its clients.• JMS Provider - This is a messaging system that implementsJMS in addition to the other administrative and controlfunctionality required of a full-featured messaging product.• Administered Objects - Administered objects are preconfiguredJMS objects created by an administrator for the use of clients.
  18. 18. Administered objectsTwo types of JMS administered objects:• ConnectionFactory - This is the object a clientuses to create a connection with a provider.• Destination - This is the object a client uses tospecify the destination of messages it is sendingand the source of messages it receives.
  19. 19. JMS Administration
  20. 20. DomainsThere are two models of interaction:● In the point-to-point (or PTP) messaging model, each message is delivered from a message producer to a single message consumer.● In the publish/subscribe (or pub/sub) model, a single message can be delivered from a producer to any number of consumers.
  21. 21. PTP
  22. 22. Pub / Sub
  23. 23. PTP and Pub/Sub Interfaces
  24. 24. Session● A session is a single-threaded context for producing and consuming messages.● Sessions are the JMS entity that supports transactions. – A JMS client may use JTA to delimit distributed transactions; however, this is a function of the transaction environment the client is running in. It is not a feature of JMS.
  25. 25. Messages Composed of:● Header used by both clients and providers to identify and route messages● Properties – Application-specific properties – Standard properties – Provider-specific properties● Body
  26. 26. Message Header Properties
  27. 27. Message Selection● By headers and properties not delivered differ a bit depending on the MessageConsumer● Based on SQL92 conditional expression syntax "JMSType = ’car’ AND color = ’blue’ AND weight > 2500"
  28. 28. Message Types ● StreamMessage ● MapMessage ● TextMessage ● ObjectMessage ● BytesMessage
  29. 29. Message Acknowledgmnent Acknowledgment handled automatically if session is transacted. Other way three types:● DUPS_OK_ACKNOWLEDGE● AUTO_ACKNOWLEDGE● CLIENT_ACKNOWLEDGE
  30. 30. Delivery Mode● NON_PERSISTENT delivers at-most-once. Msg may be losed.● PERSISTENT once-and-only-once. Msg must not delivered twice.
  31. 31. Message Scheduling
  32. 32. Message Scheduling● No message scheduling in specification!
  33. 33. Apache ActiveMQActiveMQ from version 5.4 has an optional persistent scheduler built into the ActiveMQmessage broker. It is enabled by setting the broker schedulerSupport attribute to true inthe Xml Configuration.An ActiveMQ client can take advantage of a delayed delivery by using the followingmessage properties. Property name type description AMQ_SCHEDULED_DELAY long The time in milliseconds that a message will wait before being scheduled to be delivered by the broker AMQ_SCHEDULED_PERIOD long The time in milliseconds to wait after the start time to wait before scheduling the message again AMQ_SCHEDULED_REPEAT int The number of times to repeat scheduling a message for delivery AMQ_SCHEDULED_CRON String Use a Cron entry to set the schedule
  34. 34. ActiveMQ ExampleMessageProducer producer = session.createProducer(destination);TextMessage message = session.createTextMessage("test msg");long time = 60 * 1000;message.setLongProperty( ScheduledMessage.AMQ_SCHEDULED_DELAY, time);producer.send(message);
  35. 35. Questions
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×