簡體   English   中英

使用CCDT連接到MQ服務器

[英]Connecting to the MQ Server using CCDT

我正在嘗試使用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#連接。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM