我需要一些帮助来理解为什么我的库不适用于MQQUEUEMANAGER
。
这是我的代码:
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
但我有一个错误:
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会产生一个错误吗?
发布于 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(也就是原则)。
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命令将:
发布于 2021-10-29 06:36:47
身份执行的操作
debug();
operator放在“您的”脚本中的某个位置(尽管它看起来像是从here中提取的),或者将您的代码包含在try block中,如下所示:尝试{//在不了解代码的作用的情况下复制粘贴的代码} catch (Exception ex) {log.error(“复制粘贴的脚本失败”,ex);抛出ex;}这样,您将在jmeter.log file中看到更友好的堆栈跟踪,并能够找出问题的根本原因
我没有看到代码有任何问题,即使在Beanshell上也能正常工作,以下是证据:
您可能还会发现IBM MQ testing with JMeter - Learn How文章很有用。
https://stackoverflow.com/questions/69755370
复制相似问题