Olá, Habr!
Este é um prequel do meu e ao mesmo tempo um remake do artigo .
Desta vez, vou compartilhar minha experiência de integrar o JMeter com o IBM MQ para teste eficiente de aplicações no IBM WAS. Enfrentei essa tarefa, e não foi fácil. Quero ajudar a economizar tempo de todos os interessados.

Introdução
Sobre o projeto: uma bus de dados, várias mensagens em xml, três áreas de troca (filas, banco de dados, sistema de arquivos), serviços da web com sua lógica de processamento de mensagens. À medida que o projeto avançava, testar manualmente tornava-se cada vez mais complicado. O Apache JMeter foi chamado para ajudar — é poderoso e open-source, com uma grande comunidade de usuários e uma interface amigável. A facilidade de personalização da versão 'padrão' permite cobrir qualquer caso, e a promessa do principal desenvolvedor de ajudar caso necessário (ele realmente ajudou) consolidou minha escolha.
Preparação do contexto inicial
Para interagir com o gerenciador de filas, é necessário um contexto inicial. Ele pode ser de vários tipos, aqui está pode ser lido em mais detalhes.
Para criá-lo, é conveniente usar o MQ Explorer:

Figura 1: Adicionando o contexto inicial
Selecionar o tipo de arquivo de contexto e o diretório para armazenamento .bindings arquivo que conterá a descrição dos objetos JNDI:

Figura 2: Seleção do tipo de contexto inicial
Após isso, é possível começar a criar esses objetos. Começaremos pela fábrica de conexões:

Figura 3: Criando a fábrica de conexões
Escolha um nome claro...

Figura 4: Seleção do nome da fábrica de conexões
... e tipo Queue Connection Factory:

Figura 5: Seleção do tipo da fábrica de conexões
Protocolo — MQ Client para possibilitar a interação remota com o MQ:

Figura 6: Seleção do protocolo da fábrica de conexões
Na próxima etapa, você pode selecionar uma fábrica existente e copiar as configurações dela. Clique Next, se não houver nenhuma:

Figura 7: Seleção das configurações da fábrica de conexões existente
Na janela de seleção de parâmetros, basta definir três. Na guia Conexão especifique o nome do gerenciador de filas e o IP do servidor onde ele está localizado (porta 1414 deixe em branco):

Figura 8: Configurando os parâmetros da fábrica de conexões
E na guia Channels — canal para a conexão. Clique Finish para concluir:

Figura 9: Conclusão da criação da fábrica de conexões
Agora vamos criar uma conexão com a fila:

Figura 10: Criação de objeto alvo
Escolheremos um nome claro (prefiro usar o nome real da fila) e o tipo Fila:

Figura 11: Seleção do nome e tipo de objeto alvo
De acordo com a Figura 7 , é possível copiar as configurações de uma fila existente. Também pressionamos Next, se for a primeira:

Figura 12: Seleção das configurações do objeto alvo existente
Na janela de configurações, basta selecionar o nome do gerenciador e a fila desejada, pressionar Finish. Depois, repetir o número necessário de vezes, até que todas as filas necessárias para a interação com o JMeter sejam criadas:

Figura 13: Conclusão da criação do objeto alvo
Preparação do JMeter
A preparação do JMeter consiste na adição de bibliotecas necessárias para a interação com o MQ. Elas estão localizadas em %wmq_home%/java/lib. Copie-as para %jmeter_home%/lib/ext antes de iniciar o JMeter.
- com.ibm.mq.commonservices.jar
- com.ibm.mq.headers.jar
- com.ibm.mq.jar
- com.ibm.mq.jmqi.jar
- com.ibm.mq.pcf.jar
- com.ibm.mqjms.jar
- dhbcore.jar
- fscontext.jar
- jms.jar
- jta.jar
- providerutil.jar
Lista alternativa, sugerida por em com uma pequena nuance: javax.jms-api-2.0.jar em vez de jms.jar.
Com jms.jar ocorre o erro NoClassDEfFoundError, cuja solução encontrei .
- com.ibm.mq.allclient.jar
- fscontext.jar
- javax.jms-api-2.0.jar
- providerutil.jar
Ambas as listas de bibliotecas funcionam com sucesso com JMeter 5.0 e IBM MQ 8.0.0.4.
Configuração do plano de teste
O conjunto necessário e suficiente de elementos do JMeter é assim:

Figura 14: Plano de teste
No exemplo do plano de teste, existem cinco variáveis. Apesar do número pequeno, recomendo criar elementos de configuração separados para diferentes tipos de variáveis. À medida que os testes crescem, isso facilitará muito a navegação. Neste caso, obtemos duas listas. A primeira contém os parâmetros de conexão com o MQ (veja Figura 2 e Figura 4):

Figura 15: Parâmetros de conexão com o MQ
A segunda contém os nomes dos objetos alvo, referindo-se às filas:

Figura 16: Nomes de fila parametrizados
Agora, é necessário configurar o JMS Publisher para enviar a mensagem de teste para a fila de saída:

Figura 17: Configuração do JMS Publisher
E o JMS Subscriber para ler a mensagem da fila de entrada:

Figura 18: Configuração do JMS Subscriber
Se tudo foi feito corretamente, o resultado da execução no listener será preenchido com cores verdes vibrantes e animadas.
Conclusão
Omiti deliberadamente as questões de roteamento e administração; são temas bastante íntimos e amplos para publicações separadas.
Além disso, há uma boa quantidade de nuances no trabalho com filas, bancos de dados e arquivos, sobre as quais também gostaríamos de falar separadamente e em detalhes.
Cuide do seu tempo. E obrigado pela atenção.

Fonte: habr.com
