HornetQ - 5.Transports

25
Treinamento HornetQ

Transcript of HornetQ - 5.Transports

Page 1: HornetQ - 5.Transports

Treinamento HornetQ

Page 2: HornetQ - 5.Transports

Agenda

• Agenda– Overview– Acceptors– Connectors– Dinâmica de Funcionamento– Configuração do Netty

Page 3: HornetQ - 5.Transports

Transporte

• Overview– Transporte diz respeito ao mecanismo de

comunicação entre o cliente e HornetQ.– Seu mecanismo de comunicação padrão é

baseado na biblioteca Netty.– A camada de transporte tem arquitetura plugável.• Qualquer um pode desenvolver seu próprio mecanismo

de transporte (SPI – Service Provider Interface)

Page 4: HornetQ - 5.Transports

Transporte

• Overview– O que é Netty?• Framework para desenvolvimento de aplicações em

rede baseado em eventos assincronos.• Principais características:– Performance»Melhor throughput e baixa latência» Baixo consumo de memória

– Segurança» Suportar SSL/TLS e StartTLS

Page 5: HornetQ - 5.Transports

Transporte

• Acceptors– Define a maneira a qual as conexões serão feita ao

HornetQ.– Configurações definidas no arquivo hornetq-

configuration.xml.

Page 6: HornetQ - 5.Transports

Transporte

• Acceptorshornetq-configuration.xml.

– Acceptor são definidos dentro da tag <acceptors>– Pode existir mais de um <acceptor> dentro do <acceptors>

Page 7: HornetQ - 5.Transports

Transporte

• Acceptorshornetq-configuration.xml.

– Estamos dizendo que as conexões serão aceitas via Netty e o servidor escutará solicitações na porta 5446.

Fábrica utilizada para criar o Acceptor

Aceita conexão de qualquer host. (Seja

cauteloso)

Porta em que o servidor estará ouvindo as

conexões.

Page 8: HornetQ - 5.Transports

Transporte

• Connectors– Eles falam como os clientes devem se conectar ao

HornetQ.– Suas configurações também são definidas no

arquivo hornetq-configuration.xml.

Page 9: HornetQ - 5.Transports

Transporte

• Acceptorshornetq-configuration.xml.

– Connector são definidos dentro da tag <connectors>– Pode existir mais de um <connector> dentro do

<connectors>

Page 10: HornetQ - 5.Transports

Transporte

• Connectorshornetq-configuration.xml.

– Estamos dizendo: Quero me conectar ao servidor “localhost” utilizando o Netty na porta 5446.

Fábrica utilizada para criar o Connector

IP do host HornetQ.

Porta do host que se deseja conectar.

Page 11: HornetQ - 5.Transports

Transporte

• Dinâmica de Funcionamento

Servidor HornetQIP: 192.168.1.110

Cliente HornetQ

1 – Cliente faz lookup JNDI na Connection Factory

2 – Servidor informa ao cliente o IP e Porta para conexão

3 – O Cliente faz a conexão com o servidor

É importante que o acceptor esteja

configurado para aceitar conexão do cliente e a

porta seja a mesma informada no connector

Page 12: HornetQ - 5.Transports

Transporte

• Dinâmica de Funcionamento– Requisitos para que a conexão seja estabelecida

remotamente.1. Liberar o acesso remoto ao servidor JNDI do HornetQ

no arquivo hornetq-beans.xml.2. Configurar o acceptor e o connector no arquivo

hornetq-configuration.xml3. Associar a ConnectionFactory ao connector no

arquivo hornetq-jms.xml.

Page 13: HornetQ - 5.Transports

Transporte

• Dinâmica de Funcionamento– Requisitos para que a conexão seja estabelecida

remotamente.• Liberar o acesso remoto ao servidor JNDI do HornetQ

no arquivo hornetq-beans.xml.Substitua “localhost” pelo IP

do servidor.

Page 14: HornetQ - 5.Transports

Transporte

• Dinâmica de Funcionamento– Requisitos para que a conexão seja estabelecida

remotamente.• Configurar o acceptor e o connector no arquivo

hornetq-configuration.xmlIP do servidor HornetQ.

As portas devem ser as mesma.

De qual host o servidor aceitará conexão. Valor

0.0.0.0 aceita conexões de qualquer hosts.

Page 15: HornetQ - 5.Transports

Transporte

• Dinâmica de Funcionamento– Requisitos para que a conexão seja estabelecida

remotamente.• Associar a ConnectionFactory ao connector no arquivo

hornetq-jms.xml.

hornetq-configuration.xml

hornetq-jms.xml

Page 16: HornetQ - 5.Transports

Transporte

• Configuração do Netty– Netty suporta os seguintes mecanismo de transporte:• Sockets TCP• SSL• HTTP/HTTPS• Servlet

Daremos atenção especial a esses

Page 17: HornetQ - 5.Transports

Transporte

• Configuração do Netty– Sockets TCP• Mecanismo de transporte padrão• Comunicação insegura• Pode ser configurado para utilizar:– Java IO– Java NIO

Page 18: HornetQ - 5.Transports

Transporte

• Configuração do Netty– Sockets TCP• Java IO– Algumas vezes é possível conseguir melhor latência.

Útil quando o servidor manipula pouca requisições.• Java NIO– Escala melhor que o anterior quando há

necessidade de muitas conexões simultâneas.

Page 19: HornetQ - 5.Transports

Transporte

• Configuração do Netty– Sockets TCP• Java IO / NIO

Por padrão é FALSE, ou seja, não utiliza JAVA NIO.

Page 20: HornetQ - 5.Transports

Transporte

• Configuração do Netty– Outros Parâmetros Importantes:• tcp-send-buffer-size

– Tamanho do buffer em bytes do lado cliente que será utilizado para armazenar as mensagens antes que elas sejam enviadas. Deve está associada a largura da banda da rede. Valor padrão 32 Kb.

– Buffer = Largura da Banda * RTT

• nio-remote-threads– Quantidade de threads criadas pelo NIO para

encaminhamento de pacotes ao servidor. Valor padrão -1, que significa que é a quantidade de processadores * 3.

Page 21: HornetQ - 5.Transports

Transporte

• Configuração do Netty– Outros Parametros Importantes:

Quando falarmos de tunning, aprenderemos

como configurá-lo de forma adequada.

Page 22: HornetQ - 5.Transports

Transporte

• Configuração do Netty– SSL• Mecanismo de sockets acrescido de criptografia.• Consiste basicamente no uso de certificado digital.• Envolve configuração do connector e acceptor.• Parametros

– ssl-enabled– key-store-path– key-store-password– trust-store-path– trust-store-password

Page 23: HornetQ - 5.Transports

Transporte

• Configuração do Netty– SSL• Será utilizado o keystore e certificado dos samples

do HornetQ.– Diretório $HORNETQ_HOME/examples/jms/ssl-

enabled/server0» hornetq.example.keystore» hornetq.example.truststore

• Os arquivos ficaram no diretório $HORNETQ_HOME/config/stand-alone/non-clustered

Page 24: HornetQ - 5.Transports

Transporte

• Configuração do Netty– SSL• Configurando o Connector Ativa o SSL

Caminho da keystore no cliente.

O cliente precisa do arquivo localmente.Senha da keystore

Não é necessária nenhuma alteração nos clientes.

Page 25: HornetQ - 5.Transports

Transporte

• Configuração do Netty– SSL• Configurando o Acceptor

Ativa o SSL

Caminho da keystore no

servidor.

Senha da keystore

Caminho do certificado.Senha do

certificado