C# 使用CCDT连接到MQ服务器
我正试图使用C# 使用CCDT连接到MQ服务器,c#,ibm-mq,C#,Ibm Mq,我正试图使用CCDT文件中的信息连接到MQ。我当前可以使用所有详细信息连接到MQ,并从队列中获取消息和将消息放入队列 在大量的谷歌搜索之后,我找不到任何允许我使用CCDT文件进行连接的示例代码 我的一位同事向我转发了他的JMS连接代码,但我无法将其移植到C JAVA代码如下- public class MQTest { public static void main(String[] args) { MQQueueManager queueManager = null; URL
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);
}
}
}
我没有使用URL
,而是使用URI
(在C#中)来设置文件位置。(这可能被错误地使用。但不确定还要使用什么。)
但是我不能在URI上使用openConnection()
。而且
queueManager=newmqqueuemanager(“SDCQMGR.T1”,ccdtFileUrl)代码>
给出参数重载异常。因为C#中不支持URI
我试着查找示例,但找到了一些JMS示例,仅此而已。在C#中查找一些要连接的示例代码。您需要设置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);
}
您需要设置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);
}
您需要设置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);
}
您需要设置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);
}
只是澄清一下QM1
是我的队列管理器名称。另外,在设置AMQCLCHL.TAB
时,我应该如何指定我的位置?它位于D:/AMQCLCHL.TAB
(在硬盘上)或\TAB\AMQCLCHL.TAB
(在我的项目中,已导入)。好的。格式?只需“D:/AMQCLCHL.TAB”
?参见上面的示例代码。它分别设置路径(MQCHLLIB)和文件名(MQCHLTAB)。这不是路径格式的问题。检查CCDT文件中指定的队列管理器名称是否与您在应用程序中指定的名称相同。很抱歉,我是个笨蛋。这是我当前设置变量的代码<代码>System.Environment.SetEnvironmentVariable(“MQCHLLIB”,“D:/”)代码>System.Environment.SetEnvironmentVariable(“MQCHLTAB”、“AMQCLCHL.TAB”)代码>而我仍然得到相同的错误。队列管理器的名称是正确的。请澄清一下QM1
是我的队列管理器名称。另外,在设置AMQCLCHL.TAB
时,我应该如何指定我的位置?它位于D:/AMQCLCHL.TAB
(在硬盘上)或\TAB\AMQCLCHL.TAB
(在我的项目中,已导入)。好的。格式?只需“D:/AMQCLCHL.TAB”
?参见上面的示例代码。它分别设置路径(MQCHLLIB)和文件名(MQCHLTAB)。这不是路径格式的问题。检查CCDT文件中指定的队列管理器名称是否与您在应用程序中指定的名称相同。很抱歉,我是个笨蛋。这是我当前设置变量的代码<代码>System.Environment.SetEnvironmentVariable(“MQCHLLIB”,“D:/”)代码>System.Environment.SetEnvironmentVariable(“MQCHLTAB”、“AMQCLCHL.TAB”)代码>而我仍然得到相同的错误。队列管理器的名称是正确的。请澄清一下QM1
是我的队列管理器名称。另外,在设置AMQCLCHL.TAB
时,我应该如何指定我的位置?它位于D:/AMQCLCHL.TAB
(在硬盘上)或\TAB\AMQCLCHL.TAB
(在我的项目中,已导入)。好的。格式?只需“D:/AMQCLCHL.TAB”
?参见上面的示例代码。它分别设置路径(MQCHLLIB)和文件名(MQCHLTAB)。这不是路径格式的问题。检查CCDT文件中指定的队列管理器名称是否与您在应用程序中指定的名称相同。很抱歉,我是个笨蛋。这是我当前设置变量的代码<代码>System.Environment.SetEnvironmentVariable(“MQCHLLIB”,“D:/”)代码>System.Environment.SetEnvironmentVariable(“MQCHLTAB”、“AMQCLCHL.TAB”)代码>而我仍然得到相同的错误。队列管理器的名称是正确的。请澄清一下QM1
是我的队列管理器名称。另外,在设置AMQCLCHL.TAB
时,我应该如何指定我的位置?它位于D:/AMQCLCHL.TAB
(在硬盘上)或\TAB\AMQCLCHL.TAB
(在我的项目中,已导入)。好的。格式?只需“D:/AMQCLCHL.TAB”
?参见上面的示例代码。它分别设置路径(MQCHLLIB)和文件名(MQCHLTAB)。这不是路径格式的问题。检查CCDT文件中指定的队列管理器名称是否与您在应用程序中指定的名称相同。很抱歉,我是个笨蛋。这是我当前设置变量的代码<代码>System.Environment.SetEnvironmentVariable(“MQCHLLIB”,“D:/”)代码>System.Environment.SetEnvironmentVariable(“MQCHLTAB”、“AMQCLCHL.TAB”)代码>而我仍然得到相同的错误。队列管理器名称正确。