我正在尝试使用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#连接的示例代码。
答案 0 :(得分:3)
您需要设置MQCHLLIB
和MQCHLTAB
环境变量才能使用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);
}