使用CCDT连接到MQ服务器

时间:2014-09-29 03:47:20

标签: c# ibm-mq

我正在尝试使用MQ文件中的信息连接到CCDT。我现在可以使用所有细节连接到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);
 }
}
}

我使用URL(在C#中)来设置文件位置,而不是URI。 (这可能是错误使用的。不知道还有什么可以使用。)

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

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

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

我试过查找样本,但我发现了一些JMS样本,就是这样。寻找一些用C#连接的示例代码。

1 个答案:

答案 0 :(得分:3)

您需要设置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);
        }