novidades do jms 2.0
DESCRIPTION
TRANSCRIPT
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Novidades do JMS 2.0
Fernando RibeiroPrincipal Sales ConsultantSystems & Engineered Systems
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Safe Harbor StatementThe following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
Visão Geral
Nova API
Integração com a Java EE 7
Novos Recursos
Q&A
1
2
3
4
5
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Visão Geral• O JMS é uma das tecnologias mais importantes da plataforma Java EE. Além
de servidores de aplicação, como Oracle WebLogic, IBM WebSphere e Red Hat JBoss EAP, ela é usada com brokers de mensageria, como IBM MQ, Red Hat JBoss A-MQ e Pivotal RabbitMQ• O JMS foi atualizada no ano passado depois de 10 anos. Durante este
tempo, a plataforma mudou muito e surgiram novos requisitos• A nova versão inclui uma nova API, integração com a Java EE 7 e novos
recursos
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Nova API• As interfaces Connection, Session, MessageProducer e MessageConsumer são substituídas pela nova interface JMSContext• Todas as interfaces estendem a interface java.lang.AutoCloseable• As novas interfaces não lançam checked exceptions
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
API Clássica
try (Connection conn = connFactory.createConnection(); Session sess = conn.createSession(); MessageProducer prod = sess.createProducer(queue)) {
...
} catch (JMSException e) {
...
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
API Simplificada
try (JMSContext ctx = connFactory.createContext()) {
...
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Publishers• Não é mais necessário criar messages
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
API Clássica
try (Connection conn = connFactory.createConnection(); Session sess = conn.createSession(); MessageProducer prod = sess.createProducer(queue)) {
TextMessage msg = sess.createTextMessage(text);
prod.send(msg);
} catch (JMSException e) {
...
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
API Simplificada
try (JMSContext ctx = connFactory.createContext()) {
ctx.createProducer().send(queue, text);
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Consumers• Não é mais necessário chamar o método start da classe Connection• O método receive da classe MessageConsumer é substituído pelo
método receiveBody da nova classe JMSConsumer
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
API Clássica
try (Connection conn = connFactory.createConnection(); Session sess = conn.createSession(); MessageConsumer cons = sess.createConsumer(queue)) {
conn.start();
TextMessage msg = (TextMessage) cons.receive();
out.println(msg.getText());
} catch (JMSException e) {
...
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
API Simplificada
try (JMSContext ctx = connFactory.createContext()) {
out.println(ctx.createConsumer(queue).receiveBody(String.class));
}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Integração com a Java EE 7• Existe uma nova connection factory padrão:@Resource(“lookup=java:comp/DefaultJMSConnectionFactory”) ConnectionFactory connFactory;
• Além disso, existem novas anotações para definir connection factories e destinations• Os novos contexts podem ser injetados facilmente:@Inject JMSContext ctx;
@Inject @JMSConnectionFactory(“jms/ExemploConnectionFactory”) JMSContext ctx;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Novos Recursos• Assinaturas compartilhadassess.createSharedConsumer(topic, “ExemploSubscription”);
sess.createSharedDurableConsumer(topic, “ExemploSubscription”);
• Envio assíncronoprod.send(queue, text, new ExemploCompletionListener());
• Atrasos de entregaprod.setDeliveryDelay(1000);
• Controle de entregas obrigatóriomsg.getJMSRedelivered();
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Q&A
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Referências• JMS 2.0 – https://jcp.org/en/jsr/detail?id=343• Oracle WebLogic – http://www.oracle.com/weblogic
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |