рдкреЗрд╢ рд╣реИ JMS 2.0

рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, 12 рдЬреВрди 2013 рдХреЛ, рдЬрд╛рд╡рд╛ рдИрдИ 7 рдХреА рд░рд┐рд▓реАрдЬ рдХреЛ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рдЬреЗрдПрдордПрд╕ рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдереА, рдЬрд┐рд╕реЗ 2002 рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдкрд╛рда рдирд┐рдЧреЗрд▓ рдбрд┐рдХрд┐рди рдХреЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдПрдХ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рд╣реИред рдкрд╛рда рдХреЛ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЗрдЪреНрдЫреБрдХ рдкрд╛рдардХ рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЬреЗрдПрдордПрд╕ 1.1 рдПрдкреАрдЖрдИ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдЗрд╕рд▓рд┐рдП, 2002 рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред JMS 2.0 рдореЗрдВ, рдирдпрд╛ API JMS рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ API рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирдП рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

JMS 2.0 рдПрдкреАрдЖрдИ: JMSContext, JMSProducer рдФрд░ JMSConsumer рдореЗрдВ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред


рдЬреЗрдПрдордПрд╕ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдПред JMS 1.1:
public void sendMessageJMS11(ConnectionFactory connectionFactory, Queue queue, String text) { try { Connection connection = connectionFactory.createConnection(); try { Session session =connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(queue); TextMessage textMessage = session.createTextMessage(text); messageProducer.send(textMessage); } finally { connection.close(); } } catch (JMSException ex) { // handle exception (details omitted) } } 


JMS 2.0:
 public void sendMessageJMS20(ConnectionFactory connectionFactory, Queue queue, String text) { try (JMSContext context = connectionFactory.createContext();){ context.createProducer().send(queue, text); } catch (JMSRuntimeException ex) { // handle exception (details omitted) } } 




рдирдП API рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рддрд░реАрдХреЗ рдПрдХ рдЬрд╛рдБрдЪ рдХрд┐рдП рдЧрдП JMSException рдХреЗ рдмрдЬрд╛рдп RuntimeException - JMSRuntimeException рдХреЛ рдлреЗрдВрдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЬреЗрдПрдордПрд╕ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬреЗрдПрдордПрд╕ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐

рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдЕрдВрддрд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
JMS 1.1:
 public String receiveMessageJMS11(ConnectionFactory connectionFactory,Queue queue){ String body=null; try { Connection connection = connectionFactory.createConnection(); try { Session session =connection.createSession(false,Session.AUTO_ACKNOWLEDGE); MessageConsumer messageConsumer = session.createConsumer(queue); connection.start(); TextMessage textMessage = (TextMessage)messageConsumer.receive(); body = textMessage.getText(); } finally { connection.close(); } } catch (JMSException ex) { // handle exception (details omitted) } return body; } 


JMS 2.0:
 public String receiveMessageJMS20(ConnectionFactory connectionFactory,Queue queue){ String body=null; try (JMSContext context = connectionFactory.createContext();){ JMSConsumer consumer = context.createConsumer(queue); body = consumer.receiveBody(String.class); } catch (JMSRuntimeException ex) { // handle exception (details omitted) } return body; } 



рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬреЗрдПрдордПрд╕ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐

рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, JMS 1.1 рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 MessageConsumer messageConsumer = session.createConsumer(queue); messageConsumer.setMessageListener(messageListener); connection.start(); 


JMS 2.0 рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 JMSConsumer consumer = context.createConsumer(queue); consumer.setMessageListener(messageListener); 


MessageConsumer рдХреЗ рдмрдЬрд╛рдп - JMSConsumerред рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛ рдИрдИ рд╡реЗрдм рдпрд╛ рдИрдЬреЗрдмреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рд╕реЗрдЯрдореИрд╕реЗрдЬ рд▓рд╛рдЗрдЬрдирд░ рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рдВрджреЗрд╢-рдЪрд╛рд▓рд┐рдд рдмреАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

Java EE рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ JMSContext рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд╛рд▓реЗрдВ


рдПрдХ рдЬрд╛рд╡рд╛ рдИрдИ рдЖрд╡реЗрджрди рдореЗрдВ, рдПрдХ JMSContext рдПрдХ рдЗрдВрдЬреЗрдХреНрд╢рди рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдмрд╛рдж, JMSContext рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдЖрдкрдХреЛ рдПрдХ рд╕рддреНрд░ рдмреАрди рдпрд╛ рд╕рд░реНрд╡рд▓реЗрдЯ рдореЗрдВ JMSContext рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
 @Inject @JMSConnectionFactory( "jms/connectionFactory") private JMSContext context; @Resource(lookup = "jms/dataQueue") private Queue dataQueue; public void sendMessageJavaEE7(String body) { context.send(dataQueue, body); } 


JMSContext рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдХреЗ рджреМрд░рд╛рди JTA рд▓реЗрдирджреЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ JMSContext рдПрдХ рдХрдорд┐рдЯ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдЖрдк рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛; рдпрджрд┐ рдХреЛрдИ рд▓реЗрди-рджреЗрди рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╣ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕ рдкрд░ рдореИрдВрдиреЗ рд░реБрдХрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ:
рдЬреЗрдПрдордПрд╕ 2.0 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ, рднрд╛рдЧ рдПрдХ: рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА
рдЬреЗрдПрдордПрд╕ 2.0 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ, рднрд╛рдЧ рджреЛ - рдирдИ рд╕рдВрджреЗрд╢ рд╕реБрд╡рд┐рдзрд╛рдПрдБ

Source: https://habr.com/ru/post/In184460/


All Articles