Перейти к содержимому

Фотография

JMS Subscriber. Обработка ответов.

JMS Subscriber bytesmessage

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 03 сентября 2018 - 11:46

Добрый день, 
Прошу помощи с проблемой. По работе требуется провести нагрузочное тестирование, необходимо отправлять и получать сообщения через IBM MQ. Я настроил отправку XML сообщения через JMS Publisher, а ответ получаю через JMS Subscriber.

Вопрос: Ответ приходит в виде BytesMessage - не интерпретированных байт (см.рисунок). Как их перевести в иной формат чтобы можно было использовать к примеру Response Assertion?
Jmeter 4.0

 

Заранее Спасибо

 

 

 

 

URj13d.jpg


  • 0

#2 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 03 сентября 2018 - 22:08

выставили Message Type в Bytes Message?

 

https://jmeter.apach...-test-plan.html


  • 0

#3 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 04 сентября 2018 - 06:05

выставили Message Type в Bytes Message?

 

https://jmeter.apach...-test-plan.html

 

Нет, стоит Text message
XAUTy0.jpg


  • 0

#4 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 07:01

тогда может всё-таки надо выставить Message Type в Bytes Message? как указано в инструкции?

 

https://jmeter.apach...-test-plan.html


  • 0

#5 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 04 сентября 2018 - 08:00

 

тогда может всё-таки надо выставить Message Type в Bytes Message? как указано в инструкции?

 

https://jmeter.apach...-test-plan.html

 

Если честно не увидел обязательности выбора именно формата Bytes Message.Там лишь указано чтобы выбрал нужный мне формат и не ошибся с ним

  1. Select the message type. If the message is in object format or map message, make sure the message is generated correctly.

В моем случае это возможно настройка на стороне IBM MQ. Но по сути это не важно.
Как я думал один из вариантов это то , что мне нужно использовать некий постскрипт, который преобразует bytes message в string и передаст его на обработку соответствующему assert`у. Но возможно я не прав и что то делаю не так в настройках.
Возможно что нужно что то сделать в user.properties или system.properties 


  • 0

#6 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 08:16

https://jmeter.apach...jms/jms_pub.png

 

посмотрите на картинку в инструкции, там есть Message Type - Bytes Message

 

почему бы его не выставить если у вас именно такой тип сообщений?


  • 0

#7 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 04 сентября 2018 - 08:30

Потому что я отправляю XML, а вот ответ получаю в формате Bytes Message
В любом случае пробовал отправлять и в этом формате, ответ приходит такой же.

Мне необходимо добавить проверку к сообщению получаемому JMS Subscriber, но проблема в том что assert`ы не понимают bytes message? предварительно необходимо их перевести в формат либо JSON либо XML либо text(string) и вот как это сделать я не знаю.


  • 0

#8 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 08:33

https://www.ibm.com/...oc/q032110_.htm


  • 0

#9 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 04 сентября 2018 - 08:40

Как я понимаю без использования инструментария админа IBM MQ это не поможет.
У меня туда доступа нет, я могу оперировать только средствами jmeter


  • 0

#10 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 09:23

даже и код есть, как читать bytesmessage

 

попробуйте вызывать его через BeanShell 

static final int ccsidIn_SIZE = (Integer.SIZE)/8;
...
connection.start();
BytesMessage messageIn = (BytesMessage) consumer.receive();
int messageLength = new Long(messageIn.getBodyLength()).intValue();
byte [] bin = new byte[messageLength];
messageIn.readBytes(bin, messageLength);
DataInputStream din = new DataInputStream(new ByteArrayInputStream(bin));
int ccsidIn = din.readInt();
byte [] codePageByte = new byte[messageLength - ccsidIn_SIZE];
din.read(codePageByte, 0, codePageByte.length);
System.out.println("CCSID " + ccsidIn + " code page " + new String(codePageByte, 
                    messageIn.getStringProperty(WMQConstants.JMS_IBM_CHARACTER_SET)));

  • 0

#11 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 04 сентября 2018 - 10:04

Видимо что то делаю не так.

Ставлю BeanShell post-processor внутри JMS Subscriber.

вставляю код

в консоли ошибка: 

2018-09-04 13:04:28,619 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``BytesMessage message = (BytesMessage)consumer.receive(); int TEXT_LENGTH = new L . . . '' : Typed variable declaration : Class: BytesMessage not found in namespace
2018-09-04 13:04:28,619 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``BytesMessage message = (BytesMessage)consumer.receive(); int TEXT_LENGTH = new L . . . '' : Typed variable declaration : Class: BytesMessage not found in namespace

  • 0

#12 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 04 сентября 2018 - 11:08

 

Видимо что то делаю не так.

Ставлю BeanShell post-processor внутри JMS Subscriber.

вставляю код

в консоли ошибка: 

2018-09-04 13:04:28,619 ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``BytesMessage message = (BytesMessage)consumer.receive(); int TEXT_LENGTH = new L . . . '' : Typed variable declaration : Class: BytesMessage not found in namespace
2018-09-04 13:04:28,619 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``BytesMessage message = (BytesMessage)consumer.receive(); int TEXT_LENGTH = new L . . . '' : Typed variable declaration : Class: BytesMessage not found in namespace

 

импорта скорее всего не хватает


  • 0

#13 KAE

KAE

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Андрей

Отправлено 04 сентября 2018 - 11:48

Я так и понял только не знаю что именно импортировать надо.
 


  • 0

#14 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 04 сентября 2018 - 17:31

https://www.blazemet...wledge-required


  • 0



Темы с аналогичным тегами JMS Subscriber, bytesmessage

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных