tdc 2011 - hornetq e switchyard

26
Mensageria com HornetQ e o futuro do projeto SwitchYard Samuel Tauil Middleware Instructor, Red Hat

Upload: samuel-tauil

Post on 07-Jul-2015

1.066 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: TDC 2011 - HornetQ e SwitchYard

Mensageria com HornetQ e o futuro do projeto SwitchYard

Samuel Tauil Middleware Instructor, Red Hat

Page 2: TDC 2011 - HornetQ e SwitchYard

WHO AM I?

Page 3: TDC 2011 - HornetQ e SwitchYard

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.

Page 4: TDC 2011 - HornetQ e SwitchYard

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.

Page 5: TDC 2011 - HornetQ e SwitchYard

Why so horny?

> open source

> multiprotocolo

> embarcável

> foco em performance

> clusterizável

> assíncrono

Page 6: TDC 2011 - HornetQ e SwitchYard

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

Page 7: TDC 2011 - HornetQ e SwitchYard

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.

Page 8: TDC 2011 - HornetQ e SwitchYard

Standalone!

Configuration configuration = new ConfigurationImpl();

configuration.getAcceptorConfigurations().add(

new TransportConfiguration(InVMAcceptorFactory.class.getName()));

HornetQServer server = HornetQServers.newHornetQServer(configuration);

server.start();

Page 9: TDC 2011 - HornetQ e SwitchYard

Arquitetura

JMSJMSFacadeFacade Core APICore API

HornetQHornetQServerServer

POJOsPOJOs

Page 10: TDC 2011 - HornetQ e SwitchYard

Arquitetura

StorageStorageJournalJournal

Large MessagesLarge Messages

PagingPaging

RemoteRemoteNettyNetty

NativeNative

StompStomp

ManagementManagement

Stomp ClientsStomp Clients

Rest ClientsRest Clients JMS Server JMS Server ManagerManager

JMSJMSFacadeFacade Core APICore API

HornetQHornetQServerServer

Page 11: TDC 2011 - HornetQ e SwitchYard

Arquitetura

HornetQHornetQServerServer

JournalJournalContextContext

Timed BufferTimed Buffer

nionio libaiolibaio

JNIJNIUso de JNI

mínimo

Async

● arquivos pre-filled● libaio ou Java NIO

Page 12: TDC 2011 - HornetQ e SwitchYard

Arquitetura

> POJOs

> Embarcável

> Injetável por qualquer container de DI● JBoss Microcontainer● Spring● Google Guice

Page 13: TDC 2011 - HornetQ e SwitchYard

Protocolos

> Implementação JMS 1.1 spec

> RESTful API

> STOMP

> Transporte HTTP

> Transporte inVM

> XMPP (pipeline)

Page 14: TDC 2011 - HornetQ e SwitchYard

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

Page 15: TDC 2011 - HornetQ e SwitchYard

Componentes

> JNDIServer

> MBeanServer

> Configuration

> HornetQSecurityManager

> HornetQServer

Page 16: TDC 2011 - HornetQ e SwitchYard

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>

Page 17: TDC 2011 - HornetQ e SwitchYard
Page 18: TDC 2011 - HornetQ e SwitchYard
Page 19: TDC 2011 - HornetQ e SwitchYard

A hora da(o) demo

Page 20: TDC 2011 - HornetQ e SwitchYard

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.

Page 21: TDC 2011 - HornetQ e SwitchYard

Performance

Mensag/Seg0

50000

100000

150000

200000

250000

300000

ActiveMQSwiftMQHornetQOpenMQ

Relatório completo em: http://www.jboss.org/hornetq

Page 22: TDC 2011 - HornetQ e SwitchYard

Performance

http://www.spec.org/jms2007/results/jms2007.html

Page 23: TDC 2011 - HornetQ e SwitchYard

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

Page 24: TDC 2011 - HornetQ e SwitchYard

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

}

}

Page 25: TDC 2011 - HornetQ e SwitchYard

Development Tools

● Seam Forge● Maven (Hell! XML também)● JBDS● Camel Routes

Page 26: TDC 2011 - HornetQ e SwitchYard

Obrigado!

> Samuel Tauil

[email protected]

http://about.me/samueltauil

> Clebert Suconic

irc://freenode.net:6667#hornetqhttp://jboss.org/hornetq

http://twitter.com/hornetq

http://hornetq.blogspot.com