使用CCDT连接到MQ服务器

我正在尝试使用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); 给出一个参数重载exception。 由于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); }