gpt4 book ai didi

java - 总是收到 MQJE001 : Completion Code '2' , 原因 '2059' 。错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:00 25 4
gpt4 key购买 nike

我是 WebSphere MQ 的新手。

我在 AIX 中创建了一个 Queue Manager、Channel 和 Listener,如下所示:

crtmqm MY_Q_MGR

strmqm MY_Q_MGR

runmqsc

DEFINE LISTENER(MY_QM_LISTENER) TRPTYPE(TCP) PORT(5030)

DEFINE CHANNEL(MY_QM_CHANNEL) CHLTYPE(SDR) CONNAME('10.128.1.51(5030)') XMITQ('MY_Q_MGR') DISCINT(0)

然后我检查了 QMGR 是否正在运行。我在 proc 中看到了 listener。

然后,我尝试按如下方式从 java 创建 MQQueueManager,我得到了 MQJE001: Completion Code '2', Reason '2059'。

import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.MQConstants;
import com.ibm.mq.MQEnvironment;

public class MQSample {

// code identifier
static final String sccsid = "@(#) samples/wmqjava/MQSample.java, jmscc.samples, k700, k700-L080529 1.4.1.1 08/06/01 09:37:53";

// define the name of the QueueManager
private static final String qManager = "MY_Q_MGR";

// and define the name of the Queue
private static final String qName = "SYSTEM.DEFAULT.LOCAL.QUEUE";

/**
* Main entry point
*
* @param args - command line arguments (ignored)
*/
public static void main(String args[]) {
try {
MQEnvironment.hostname = "MY IP ADDRESS";
MQEnvironment.channel = "MY_QM_CHANNEL";
MQEnvironment.port = 5030;


// Create a connection to the QueueManager
System.out.println("Connecting to queue manager: " + qManager);
System.out.println("Connecting to queue manager is finished: " + qManager);
// Set up the options on the queue we wish to open
int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT;

// Now specify the queue that we wish to open and the open options
System.out.println("Accessing queue: " + qName);
MQQueue queue = qMgr.accessQueue(qName, openOptions);
MQQueueManager qMgr = new MQQueueManager(qManager); // here i got error
System.out.println("Connecting to queue manager is finished: " + qManager);
// Set up the options on the queue we wish to open
int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT;

// Now specify the queue that we wish to open and the open options
System.out.println("Accessing queue: " + qName);
MQQueue queue = qMgr.accessQueue(qName, openOptions);

我被困在这里了。

最佳答案

您需要一个服务器连接 (SVRCONN) 类型的 channel ,而不是 SDR 类型。客户端应用程序需要一个 SVRCONN 类型的 channel 来连接到队列管理器,其中 SDR 类型的 channel 用于两个队列管理器之间的通信。

创建队列管理器时,会创建默认的 SVRCONN channel SYSTEM.DEF.SVRCONN。您可以将其用于测试。但在生产中,建议创建您自己的 channel ,而不是使用任何预定义的 channel 。

请看这个link有关您需要做什么的完整详细信息。这是来自 WebSphere MQ Quick Beginnings 一书。

关于java - 总是收到 MQJE001 : Completion Code '2' , 原因 '2059' 。错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11237425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com