рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, 12 рдЬреВрди 2013 рдХреЛ,
рдЬрд╛рд╡рд╛ рдИрдИ 7 рдХреА
рд░рд┐рд▓реАрдЬ рдХреЛ рджреБрдирд┐рдпрд╛ рдХреЗ
рд╕рд╛рдордиреЗ рд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рдЬреЗрдПрдордПрд╕ рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдереА, рдЬрд┐рд╕реЗ 2002 рдХреЗ рдмрд╛рдж рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдкрд╛рда
рдирд┐рдЧреЗрд▓ рдбрд┐рдХрд┐рди рдХреЗ
рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдПрдХ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рд╣реИред рдкрд╛рда рдХреЛ рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЗрдЪреНрдЫреБрдХ рдкрд╛рдардХ рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЬреЗрдПрдордПрд╕ 1.1 рдПрдкреАрдЖрдИ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдЗрд╕рд▓рд┐рдП, 2002 рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред JMS 2.0 рдореЗрдВ, рдирдпрд╛ API JMS рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ API рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирдП рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
JMS 2.0 рдПрдкреАрдЖрдИ: JMSContext, JMSProducer рдФрд░ JMSConsumer рдореЗрдВ рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдП рд╣реИрдВред
- JMSContext рдХреНрд▓рд╛рд╕рд┐рдХ JMS API рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕рддреНрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
- JMSProducer рдПрдХ рд▓рд╛рдЗрдЯрд╡реЗрдЯ MessageProducer рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ ( рдмрд┐рд▓реНрдбрд░ рдкреИрдЯрд░реНрди ) рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╣реЗрдбрд░, рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- JMSConsumer MessageConsumer рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреЗрдПрдордПрд╕ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛
рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдПред 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) {
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) {
- рд╕рдВрд╕реНрдХрд░рдг 2.0 рдореЗрдВ рд╣рдо JavaSE 7 рд╕реЗ рдХреЛрд╢рд┐рд╢-рдХреЗ-рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
- SMS.AUTO_ACKNOWLEDGE рдкреИрд░рд╛рдореАрдЯрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ JMSContext рдореЗрдВ рд╕реЗрдЯ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдФрд░ рдорд╛рди (CLIENT_ACKNOWLEDGE рдпрд╛ DUPS_OK_ACKNOWLEDGE) рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕рддреНрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрдЬрд╛рдп JMSContext рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдПрдХ TextMessage рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рднреЗрдЬрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЗрди рдкрд╛рд╕ рдХрд░реЗрдВ
рдирдП 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) {
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) {
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╢рд┐рд╢-рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреБрдХреНрдд
- рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╕рддреНрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрдЬрд╛рдп JMSContext рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- AUTO_ACKNOWLEDGE рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
- рдПрдХ JMSRuntimeException рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ JMS 1.1 рдореЗрдВ JMSException рдХреЗ рдмрдЬрд╛рдп рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- рдХрдиреЗрдХреНрд╢рди.рд╕реНрдЯрд╛рд░реНрдЯ () рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ редreceiveBody (String.class) рд╡рд┐рдзрд┐, рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ TextMessage рдХреЛ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд░реЗрдВ рдФрд░ рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬреЗрдПрдордПрд╕ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐
рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 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 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ, рднрд╛рдЧ рджреЛ - рдирдИ рд╕рдВрджреЗрд╢ рд╕реБрд╡рд┐рдзрд╛рдПрдБ