首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JMeter中创建MQQueueManager对象?

如何在JMeter中创建MQQueueManager对象?
EN

Stack Overflow用户
提问于 2021-10-28 13:51:20
回答 2查看 61关注 0票数 0

我需要一些帮助来理解为什么我的库不适用于MQQUEUEMANAGER

这是我的代码:

代码语言:javascript
运行
复制
import java.util.Hashtable;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQQueue;
import com.ibm.mq.constants.MQConstants;

Hashtable mqProps = new Hashtable();
mqProps.put(MQConstants.CHANNEL_PROPERTY, "my_channel");
mqProps.put(MQConstants.PORT_PROPERTY, my_port);
mqProps.put(MQConstants.HOST_NAME_PROPERTY, "my_host");
mqProps.put(MQConstants.USER_ID_PROPERTY, "my_user_id");
mqProps.put(MQConstants.PASSWORD_PROPERTY, "my_password");

MQQueueManager qMgr = new MQQueueManager("my_QM", mqProps);

vars.putObject("QMGR", qMgr);

我导入了下列库:com.ibm.mq.allclient-9.2.3.0

但我有一个错误:

代码语言:javascript
运行
复制
Target exception: com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'.
 in inline evaluation of: ``import java.util.Hashtable; import com.ibm.mq.MQQueueManager; import com.ibm.mq. . . . '' at line number 14
javax.script.ScriptException: Sourced file: inline evaluation of: ``import java.util.Hashtable; import com.ibm.mq.MQQueueManager; import com.ibm.mq. . . . '' : Typed variable declaration : Object constructor : at Line: 14 : in file: inline evaluation of: ``import java.util.Hashtable; import com.ibm.mq.MQQueueManager; import com.ibm.mq. . . . '' : new MQQueueManager ( "my_QM" , mqProps )

我需要在构造函数中使用另一个特定的参数吗?

你知道为什么JMeter会产生一个错误吗?

EN

回答 2

Stack Overflow用户

发布于 2021-10-28 17:05:02

目标异常: com.ibm.mq.MQException: MQJE001:完成代码“%2”,原因“2035”。

2035 (MQRC_NOT_AUTHORIZED)的MQ原因代码表示应用程序正在使用的UserId没有连接到队列管理器的权限。

mqProps.put(MQConstants.CHANNEL_PROPERTY,"my_channel");

"my_channel“是一个示例,但请确保它不是以"SYSTEM”开头的。您应该使用自己的唯一命名通道。

mqProps.put(MQConstants.USER_ID_PROPERTY,"my_user_id");mqProps.put(MQConstants.PASSWORD_PROPERTY,"my_password");

远程服务器上是否存在这些凭据,以便队列管理器可以对这些凭据进行身份验证?您是否为该UserId提供了连接到队列管理器的权限?即使用setmqaut command

如果允许UserId打开队列呢?(同样使用setqmaut command)。

最好是将权限授予UserId的组,而不是UserId(也就是原则)。

代码语言:javascript
运行
复制
setmqaut -m {QM_NAME} -t qmgr -g {GROUP} +connect +inq +dsp
setmqaut -m {QM_NAME} -n ABC.** -t queue -g {GROUP} +allmqi +dsp

注意:**通配符是正确的。IBM MQ对"*“和"**”通配符进行了区分。

这两个setmqaut命令将:

  • 设置连接到队列管理器的权限,
  • 设置打开所有以“ABC”开头的队列的权限。
票数 0
EN

Stack Overflow用户

发布于 2021-10-29 06:36:47

  1. 看起来您正在使用Beanshell,这不是您应该以since JMeter 3.1 you're supposed to be using Groovy

身份执行的操作

  1. 尽管如此,如果您仍然愿意使用Beanshell,请注意它掩盖了问题,因此您需要将debug(); operator放在“您的”脚本中的某个位置(尽管它看起来像是从here中提取的),或者将您的代码包含在try block中,如下所示:

尝试{//在不了解代码的作用的情况下复制粘贴的代码} catch (Exception ex) {log.error(“复制粘贴的脚本失败”,ex);抛出ex;}这样,您将在jmeter.log file中看到更友好的堆栈跟踪,并能够找出问题的根本原因

我没有看到代码有任何问题,即使在Beanshell上也能正常工作,以下是证据:

您可能还会发现IBM MQ testing with JMeter - Learn How文章很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69755370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档