我如何在c#中使用JNDI连接到IBM MQ ?



我目前能够通过在c#代码中直接指定连接属性,使用IBMXMSDotnetClient连接到IBM MQ,如下所示。

XMSFactoryFactory factory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
IConnectionFactory connFactory = factory.CreateConnectionFactory();
connFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, "xxx");
connFactory.SetIntProperty(XMSC.WMQ_PORT, 1414);
connFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "xxx");
connFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
connFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "xxx");

但是在Java中,它似乎可以通过JNDI绑定文件来完成。

从我所看到的,JNDI看起来像是TNS文件(它指定了连接细节,如主机、端口、SID等),用于客户端连接到Oracle中的服务器。我理解正确吗?

如果是这种情况,是否可以使用IBMXMSDotnetClient通过JNDI绑定文件连接到IBM MQ ?我能找到的所有例子都是直接设置连接属性(connFactory.SetXXXProperty)。

我有这个代码片段来创建初始上下文,并使用它来创建连接工厂和会话。希望它能让你开始。

InitialContext ic = null;
IConnectionFactory confac = null;
IConnection conn = null;
ISession sess = null;
IMessageConsumer cons = null;
IDestination dest = null;
try
{
System.Collections.Hashtable env = new System.Collections.Hashtable();
// Set the URL or PATH where the bindings file is located
env[XMSC.IC_URL] = "file://c:/mqbindings/.bindings";
// Initialize the context
ic = new InitialContext(env);
// Lookup for the connection factory name
confac = (IConnectionFactory)ic.Lookup("myconfactoryname");
// Create connection using the details from connection factory
conn = (IConnection)confac.CreateConnection();
// Create an auto ack session
sess = conn.CreateSession(false, AcknowledgeMode.AutoAcknowledge);
// Lookup for the destination
dest = (IDestination)ic.Lookup("myqueue");
// ... rest of the code - create consumer or producer
} 
catch (XMSException xmsE)
{
// Handle exception
}

最新更新