O documento discute o projeto HornetQ e o futuro do projeto SwitchYard. Ele apresenta o que é JMS e mensageria, explica porque o HornetQ substitui o JBoss Messaging, destaca as características e funcionalidades do HornetQ, e discute brevemente o SwitchYard como uma nova geração de ESB.
3. E finalmente o que é JMS e mensageria?
API Java que encapsula destinos de mensagens
e padrões de publicação e leitura de mensagens.
Parte da especificação Java EE.
4. Mas e o JBoss Messaging?
> HornetQ é o JBoss Messaging 2.
> JBM têm 95%+ de diferença no codebase.
> EOL, novas funcionalidades no HornetQ.
> Persistência em BD.
> Suportado no JBoss EAP.
5. Why so horny?
> open source
> multiprotocolo
> embarcável
> foco em performance
> clusterizável
> assíncrono
6. Usabilidade
> Core API simples
> Configuração rápida e fácil
> Documentação completa (português em breve)
> Grande quantidade de exemplos
> Dependências reduzidas
7. Standalone!
> Não precisa de um Application Server.
> Integração JBoss AS 4.x e 5.x via JCA Adapter.
● @ResourceAdapter("hornetq-ra.rar")
> JMS Provider padrão no JBoss AS 6.
> Zero dependências do JBoss AS.
> POJO design.
8. Standalone!
Configuration configuration = new ConfigurationImpl();
configuration.getAcceptorConfigurations().add(
new TransportConfiguration(InVMAcceptorFactory.class.getName()));
HornetQServer server = HornetQServers.newHornetQServer(configuration);
server.start();
9. Arquitetura
JMS HornetQ
Facade Core API
Server
POJOs
10. Arquitetura
Storage
Journal
Large Messages
Paging
JMS HornetQ
Facade Core API
Server
Remote
Netty
Native
Stomp
Stomp Clients
Rest Clients JMS Server
Manager
Management
11. Arquitetura
● arquivos pre-filled
● libaio ou Java NIO
Context Journal
HornetQ
Server
Timed Buffer
Async
nio libaio
JNI
Uso de JNI
mínimo
12. Arquitetura
> POJOs
> Embarcável
> Injetável por qualquer container de DI
● JBoss Microcontainer
● Spring
● Google Guice
14. Funcionalidades
> Gerenciamento via JMX
> ACKs assíncronos
> Agendamento de mensagens
> Paginação de mensagens
> Suporte a mensagens grandes
> Last Value queue
> E muito mais em:
● http://community.jboss.org/wiki/HornetQFeatures
16. Configurando um Divert
> Apenas para queues local x local
> Servidor externo: Divert + Bridge
Exemplo:
<divert name="pedidos-divert">
<address>jms.queue.pedidos</address>
<forwarding-address>jms.topic.estatisticas</forwarding-address>
<exclusive>false</exclusive>
</divert>
●
20. JSR-343, o que vem por aí?
> Integração com CDI (JSR-299).
> Obrigatoriedade da implementação de RA.
> Anotações padronizadas.
> Full suporte Java EE 7.
> Suporte assíncrono.
● Envio de response depois de um método de
callback ser chamado.
23. SwitchYard
● Novo projeto para a construção da nova
geração de ESB.
● Foco em consistência e usabilidade.
● Runtime embarcável
● POJO based
● Integração com CDI
24. Exemplo de Serviço
@Service(PedidoService.class)
public class PedidoServiceBean implements PedidoService {
@Inject @Reference
private ItemService itemService;
public PedidoAck enviarPedido(Pedido pedido) {
Item item = itemService.buscarItem(pedido.getItemId());
// ...... cria ack
}
}
25. Development Tools
● Seam Forge
● Maven (Hell! XML também)
● JBDS
● Camel Routes