tdc 2011 - hornetq e switchyard
Post on 07-Jul-2015
1.067 Views
Preview:
TRANSCRIPT
Mensageria com HornetQ e o futuro do projeto SwitchYard
Samuel Tauil Middleware Instructor, Red Hat
WHO AM I?
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.
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.
Why so horny?
> open source
> multiprotocolo
> embarcável
> foco em performance
> clusterizável
> assíncrono
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
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.
Standalone!
Configuration configuration = new ConfigurationImpl();
configuration.getAcceptorConfigurations().add(
new TransportConfiguration(InVMAcceptorFactory.class.getName()));
HornetQServer server = HornetQServers.newHornetQServer(configuration);
server.start();
Arquitetura
JMSJMSFacadeFacade Core APICore API
HornetQHornetQServerServer
POJOsPOJOs
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
Arquitetura
HornetQHornetQServerServer
JournalJournalContextContext
Timed BufferTimed Buffer
nionio libaiolibaio
JNIJNIUso de JNI
mínimo
Async
● arquivos pre-filled● libaio ou Java NIO
Arquitetura
> POJOs
> Embarcável
> Injetável por qualquer container de DI● JBoss Microcontainer● Spring● Google Guice
Protocolos
> Implementação JMS 1.1 spec
> RESTful API
> STOMP
> Transporte HTTP
> Transporte inVM
> XMPP (pipeline)
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
Componentes
> JNDIServer
> MBeanServer
> Configuration
> HornetQSecurityManager
> HornetQServer
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>
●
A hora da(o) demo
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.
Performance
Mensag/Seg0
50000
100000
150000
200000
250000
300000
ActiveMQSwiftMQHornetQOpenMQ
Relatório completo em: http://www.jboss.org/hornetq
Performance
http://www.spec.org/jms2007/results/jms2007.html
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
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
}
}
Development Tools
● Seam Forge● Maven (Hell! XML também)● JBDS● Camel Routes
Obrigado!
> Samuel Tauil
samuel@redhat.com
http://about.me/samueltauil
> Clebert Suconic
irc://freenode.net:6667#hornetqhttp://jboss.org/hornetq
http://twitter.com/hornetq
http://hornetq.blogspot.com
top related