3. 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)
4. 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
5. Transporte
• Acceptors
– Define a maneira a qual as conexões serão feita ao
HornetQ.
– Configurações definidas no arquivo hornetqconfiguration.xml.
7. Transporte
• Acceptors
hornetq-configuration.xml.
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.
– Estamos dizendo que as conexões serão aceitas via Netty e
o servidor escutará solicitações na porta 5446.
8. 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.
11. Transporte
• Dinâmica de Funcionamento
2 – Servidor informa ao cliente o
IP e Porta para conexão
É importante que o
acceptor esteja
configurado para aceitar
conexão do cliente e a
porta seja a mesma
informada no connector
3 – O Cliente faz a conexão
com o servidor
Cliente HornetQ
Servidor HornetQ
IP: 192.168.1.110
1 – Cliente faz lookup JNDI na
Connection Factory
12. 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.xml
3. Associar a ConnectionFactory ao connector no
arquivo hornetq-jms.xml.
13. 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.
14. Transporte
• Dinâmica de Funcionamento
– Requisitos para que a conexão seja estabelecida
remotamente.
• Configurar o acceptor e o connector no arquivo
hornetq-configuration.xml
IP 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.
15. 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-jms.xml
hornetq-configuration.xml
16. Transporte
• Configuração do Netty
– Netty suporta os seguintes mecanismo de transporte:
•
•
•
•
Sockets TCP
SSL
HTTP/HTTPS
Servlet
Daremos atenção especial a esses
17. Transporte
• Configuração do Netty
– Sockets TCP
• Mecanismo de transporte padrão
• Comunicação insegura
• Pode ser configurado para utilizar:
– Java IO
– Java NIO
18. 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.
19. Transporte
• Configuração do Netty
– Sockets TCP
• Java IO / NIO
Por padrão é FALSE, ou seja,
não utiliza JAVA NIO.
20. 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.
21. Transporte
• Configuração do Netty
– Outros Parametros Importantes:
Quando falarmos de tunning,
aprenderemos como
configurá-lo de forma
adequada.
22. 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
23. Transporte
• Configuração do Netty
– SSL
• Será utilizado o keystore e certificado dos samples
do HornetQ.
– Diretório $HORNETQ_HOME/examples/jms/sslenabled/server0
» hornetq.example.keystore
» hornetq.example.truststore
• Os arquivos ficaram no diretório
$HORNETQ_HOME/config/stand-alone/non-clustered
24. Transporte
• Configuração do Netty
– SSL
• Configurando o Connector
Ativa o SSL
Senha da keystore
Não é necessária nenhuma alteração nos clientes.
Caminho da
keystore no
cliente. O cliente
precisa do arquivo
localmente.
25. Transporte
• Configuração do Netty
– SSL
Ativa o SSL
Caminho da
keystore no
servidor.
• Configurando o Acceptor
Senha da keystore
Senha do
certificado
Caminho do
certificado.