使用CCDT连接到MQ服务器

本文关键字:MQ 服务器 连接 CCDT 使用 | 更新日期: 2023-09-27 18:24:50

我正在尝试使用CCDT文件中的信息连接到MQ。我目前可以使用所有详细信息连接到MQ,并从队列获取消息和将消息放入队列。

经过大量的谷歌搜索,我找不到任何允许我使用CCDT文件进行连接的示例代码。

我的一位同事转发了他的JMS连接代码,但我无法将其移植到C#

JAVA代码如下-

public class MQTest {
public static void main(String[] args) {
    MQQueueManager queueManager = null;
    URL ccdtFileUrl = null;
    MQMessage mqMessage = null;
    //MQPutMessageOptions myPMO = null
    try {
     String QM =    "IB9QMGR";
     String QUEUE1 = "TEST";
     System.out.println("Starting MQClient Put Program: ");
     ccdtFileUrl = new URL("file:///D:/AMQCLCHL.TAB") ;
     ccdtFileUrl.openConnection();
     queueManager = new MQQueueManager("SDCQMGR.T1", ccdtFileUrl);
     System.out.println("Connected to QMGR ");
     int openOptions = MQC.MQOO_OUTPUT;
     MQQueue InQueue = queueManager.accessQueue(QUEUE1,openOptions,null,null,null);
     MQMessage inMessage = new MQMessage();
     inMessage.writeString("###Testing####");
     InQueue.put(inMessage);
     System.out.println("Message Id is :" + inMessage.messageId);
     System.out.println(inMessage.toString());
     InQueue.close();
     queueManager.disconnect() ;
 }
 catch(MQException ex){
     System.out.println("MQ Error - Reason code :" + ex.reasonCode);
 }
 catch (Exception e){
     System.out.println("Error : " + e);
 }
}
}

我使用URI(在C#中)来设置文件位置,而不是URL。(这可能被错误地使用了。但不确定还能用什么。)

Uri ccdtFileUrl = new Uri("file:///D:/AMQCLCHL.TAB") ;

但是我不能在URI上使用openConnection()。此外,

queueManager = new MQQueueManager("SDCQMGR.T1",ccdtFileUrl);给出一个参数重载异常。因为C#中不支持URI。

我试着查找示例,但我找到了一些JMS示例,仅此而已。正在寻找一些用C#连接的示例代码。

使用CCDT连接到MQ服务器

您需要设置MQCHLLIBMQCHLTAB环境变量才能使用CCDT。您可以从命令提示符、app.config或应用程序本身的代码中设置这两个变量。

以下示例演示了CCDT的用法:

        MQQueueManager qm = null;
        System.Environment.SetEnvironmentVariable("MQCHLLIB", "C:''ProgramData''IBM''MQ''qmgrs''QM1''@ipcc");
        System.Environment.SetEnvironmentVariable("MQCHLTAB", "AMQCLCHL.TAB");
        try
        {
            **Hashtable props = new Hashtable();
            props.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
            qm = new MQQueueManager("QM1",props);**
            MQQueue queue1 = qm.AccessQueue("SYSTEM.DEFAULT.LOCAL.QUEUE", MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING);
            MQMessage msg = new MQMessage();
            msg.WriteUTF("Hello this message is from .net client");
            queue1.Put(msg);
            queue1.Close();
            qm.Disconnect();
        }
        catch (Exception ex)
        {
            Console.Write(ex);
        }