Как можно использовать JMS двухточечный сэмплер в Jmeter для отправки сообщений в очередь IBM MQ

#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:

Я не думаю, что в настоящее время это возможно, параметры в:

  1. Используйте расширение mqmeter — MQ JMeter, оно предоставит пользовательский сэмплер запросов Java
  2. Продолжайте с тестовыми элементами JSR223, примеры фрагментов кода производителя и потребителя можно найти в IBM MQ testing with JMeter — Узнайте, как статья