#jmeter #jms #ibm-mq #jndi #point-to-point
Вопрос:
У меня есть локальный экземпляр IBM MQ, настроенный с некоторыми очередями по умолчанию.
Используя JMeter 5.4.1, я сначала хочу отправить сообщения в одну из этих очередей, чтобы проверить, работает ли соединение.
1. Возможно ли это с IBM MQ или работает только с активным MQ?
Тестовый сценарий, которого я хочу достичь, заключается в следующем:
- JMeter отправляет некоторое сообщение с ID1 в очередь с именем «DEV.QUEUE.1»
- Тестируемая система принимает сообщение от «DEV.QUEUE.1», выполняет некоторую обработку и помещает ответ в «DEV.QUEUE.2»
- JMeter проверяет и утверждает, что получен ответ на сообщение с ID1 в очереди с именем «DEV.QUEUE.2» в течение X секунд
- Просмотр результатов в сводном отчете
2. Возможно ли это с помощью двухточечного сэмплера JMS?
Я проверил официальную документацию JMeter, но я не понимаю, какие сведения о соединении мне нужно поместить в каждое из полей конфигурации сэмплера.
JMS Resources
QueueConnection Factory:
JNDI name Request queue:
JNDI name Receive queue:
Number of samples to aggregate
JMS Selector
....
etc...
Я смог подключиться к одной очереди и отправлять сообщения, используя пользовательский код в сэмплере JSR223.
Это сведения о соединении, которые я использовал для создания соединения:
def hostName = "127.0.0.1"
def hostPort = 1414
def channelName = "DEV.APP.SVRCONN"
def queueManagerName = "QM1"
def queueName = "DEV.QUEUE.1"
def ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER)
def cf = ff.createConnectionFactory()
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, hostName)
cf.setIntProperty(WMQConstants.WMQ_PORT, hostPort)
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, channelName)
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT)
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, queueManagerName)
def connInboundQueue = cf.createConnection("mquser", "secretpassword")
def sessInboundQueue = connInboundQueue.createSession(false, Session.AUTO_ACKNOWLEDGE)
def destinationInboundQueue = sessInboundQueue.createQueue(queueName)
connInboundQueue.start()
Я предполагаю, что я могу сопоставить эти учетные данные подключения с этим двухточечным сэмплером JMS, чтобы я мог достичь того же соединения, я просто не знаю как.
Итак, подводя итог:
1a. Как я могу установить соединение с двумя моими очередями с помощью двухточечного сэмплера JMS?
2a. Как можно настроить двухточечный сэмплер JMS для сценария, который я описал выше?
Я был бы признателен за любую помощь.
Ответ №1:
Я не думаю, что в настоящее время это возможно, параметры в:
- Используйте расширение mqmeter — MQ JMeter, оно предоставит пользовательский сэмплер запросов Java
- Продолжайте с тестовыми элементами JSR223, примеры фрагментов кода производителя и потребителя можно найти в IBM MQ testing with JMeter — Узнайте, как статья