【问题标题】:How to know which parameter is incorrect in MQ PCF command?如何知道 MQ PCF 命令中哪个参数不正确?
【发布时间】:2016-02-24 21:26:19
【问题描述】:

我在 Java 中使用 MQ PCF 命令来创建 MQ 队列并更新它们的参数。以下是我正在使用的代码。

PCFMessageAgent agent = new PCFMessageAgent(queueManager);
agent.setCheckResponses(false);
PCFMessage[] responses;
PCFMessage request = new PCFMessage(MQConstants.MQCMD_CHANGE_Q);
responses = agent.send(request);

我在请求中设置了以下属性

MQCA_Q_NAME=TestTQ1
MQIA_BACKOUT_THRESHOLD=0
MQIA_MAX_MSG_LENGTH=4194304
MQIA_MAX_Q_DEPTH=500
MQIA_Q_TYPE=1

我得到以下响应 完成代码 = 2 原因代码 = 3014
文档说这是由于

Parameter identifier is not valid.
The MQCFIN or MQCFIN64 Parameter field value was not valid.

问题是我怎么知道哪个参数不正确?

【问题讨论】:

  • 我已经标记了正确的响应。事实证明,当我订购 MQCA_Q_NAME 和 MQIA_Q_TYPE 是请求中的前两个属性的属性时,这工作正常。

标签: java ibm-mq mq pcf


【解决方案1】:

响应中的第一个 PCFMessage 应该有一个 PCFParamter,它应该是一个 MQCFIN,其类型为 MQIACF_PARAMETER_ID,其值将包含错误所在属性的 ID。

int errParamId = responses[0].getIntParameterValue(MQC.MQIACF_PARAMETER_ID);

【讨论】:

  • 我试过了,问题属性是 MQIA_MAX_Q_DEPTH。文档说我可以在创建和更新队列时传递这个值。有什么想法吗?
  • 我相信如果有多个属性有错误,那么就会有多个响应,每个属性一个。至于值是否有效,取决于qmgr运行的平台。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 2013-05-19
  • 2013-12-25
相关资源
最近更新 更多