簡體   English   中英

如何通過 IBM MQ 使用 JMS 點對點消息傳遞模型測量 SuT 的響應(處理)時間?

[英]How can I measure the response (processing) times of a SuT using JMS Point-to-Point messaging model through IBM MQ?

我有一個設置了 2 個隊列的遠程 IBM MQ 實例。 在它們后面是一個被測系統,它總是接收放在 INBOUND.QUEUE 上的消息,做一些處理並將響應消息放在“OUTBOUND.QUEUE”上。

我想測試這個 SuT 的響應時間。 為了實現這一點,我需要設置這個場景:

  • JMeter 將一些帶有 ID1 的消息發送到名為“INBOUND.QUEUE”的隊列
  • 被測系統從“INBOUND.QUEUE”獲取消息,進行一些處理並將響應放在“OUTBOUND.QUEUE”上
  • JMeter 檢查並斷言已在 X 秒內收到名為“OUTBOUND.QUEUE”的隊列上 ID1 消息的響應
  • 在 Aggregate Report Listener 中查看響應時間結果

在 JMeter 中,我有一個與本文中描述的設置非常相似的設置,使用帶有常規代碼的 JSR223 測試元素與 IBM MQ 隊列進行交互 - 如果我的理解是正確的,則通過JMS 與文章的不同之處在於,為了使用出站隊列中的消息,我有另一個 setUp 線程組,它為我使用消息的“OUTBOUND.QUEUE”設置了另一個連接,另一個tearDown 線程組關閉了這個連接在末尾。

在高層次上,我的設置如下所示: 在此處輸入圖片說明 在此處輸入圖片說明

到目前為止它可以工作,但它盲目地消耗消息,我需要確保我正在讀取(消耗)每個初始消息的響應延續,以便我可以計算每個完整請求 - 響應流的 SuT 的響應或處理時間. 我知道我可以為此目的使用JMS 關聯 ID ,但我不知道如何使用。

  1. 我可以使用什么方法在消息創建和消費時獲取此關聯 ID?

  2. 我是否需要一些數據結構來在消息創建時放置所有關聯 ID,以便我可以放置一個條件,例如 IF msg.getStringProperty("JMS_CorreationID") is IN 生成的 id 列表,將其從該數據結構中刪除,然后獲取JMS_IBM_PUTTIME 屬性來確定“第一條”消息的時間戳,然后最終計算當前時間和第一條消息的時間之間的時間戳增量?

  3. 一旦我這樣做了,我如何通過SampleResult類實例在第二個線程組中配置 JSR223 采樣器(消費者),以便它報告的不是它自己的執行時間,而是 JMS_IBM_PUTTIME 和當前時間之間的增量(這將代表處理時間)?

  4. 最后,一旦完成,我如何才能將第二個 JSR223 采樣器(消費者)包含在負載測試報告中?

這個邏輯是否正確/太復雜? 任何幫助或一些代碼示例將不勝感激。

通常你應該在一個帖子中只問一個問題,我認為沒有人願意寫一本書來回答你的所有問題(並且免費為你做你的工作)

  1. 如果要使用 JMS 關聯 ID,則需要在生產者中顯式調用Message.setJMSCorrelationID()函數,並在消費者中相應地將其讀取為Message.getJMSCorrelationID()
  2. 是的,您可以使用線程間通信插件JMeter 屬性類實例的props簡寫
  3. 您可以使用JSR223 PostProcessor ,將其添加為 JSR223 Sampler 的子項並使用prev.elapsedTime = 123456 ,將123456替換為具有給定相關 ID 的發送和接收消息之間的實際增量
  4. 您可以使用SampleResult.setIgnore()函數,這樣您調用此函數的 JSR223 Sampler 既不會顯示在 Listeners 中,也不會顯示在 .jtl 結果文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM