【发布时间】:2012-03-09 11:47:04
【问题描述】:
任何人都可以指导我,使用 c#.net 与 ibm websphere mq 连接,原因是我试图将消息推送到 MQ,请任何人给我建议使用 c#.net 连接
【问题讨论】:
任何人都可以指导我,使用 c#.net 与 ibm websphere mq 连接,原因是我试图将消息推送到 MQ,请任何人给我建议使用 c#.net 连接
【问题讨论】:
已经转换(java 到 c#)mq-client - nuget, github
c#示例:
var ff = JmsFactoryFactory.getInstance(JmsConstants.__Fields.WMQ_PROVIDER);
var cf = ff.createConnectionFactory();
cf.setIntProperty(CommonConstants.__Fields.WMQ_CONNECTION_MODE, CommonConstants.__Fields.WMQ_CM_CLIENT);
cf.setStringProperty(CommonConstants.__Fields.WMQ_HOST_NAME, "127.0.0.1");
cf.setIntProperty(CommonConstants.__Fields.WMQ_PORT, 8010);
cf.setStringProperty(CommonConstants.__Fields.WMQ_CHANNEL, "EXAMPLE.CHANNEL.ONE");
cf.setStringProperty(CommonConstants.__Fields.WMQ_QUEUE_MANAGER, "EXAMPLE_QUEUE_MANAGER");
cf.setStringProperty(CommonConstants.__Fields.WMQ_APPLICATIONNAME, "JMS EXAMPLE");
cf.setStringProperty(CommonConstants.USERID, "EXAMPLE_USER");
using (var context = cf.createContext())
{
var queue = context.createQueue("queue:///EXAMPLE_QUEUE_NAME");
var producer = context.createProducer();
producer.send(queue, "Hello World");
}
【讨论】:
您可以使用 IBM 提供的 .NET 库进行连接;但是,它们要求您在部署解决方案的每台服务器上安装 WebSphere MQ 客户端。 (跛脚)
如果使用 WebSphere MQ,则用于运行 XMS 应用程序的机器 必须与 WebSphere MQ Client V7.0.1.0 或更高版本一起安装
您可以通过使用 IKVM (www.ikvm.net) 转换一些 Java 库来避免这种情况。
整个过程只需 15 分钟。
您仍然需要在开发盒上下载并安装客户端,以便获取 JAR 文件。 转换后,您可以卸载客户端。
1) 获取 JAR
2) 转换 JAR
3) 复制 JAR
4) 引用 JAR
以下是如何使用这些库的一个非常简单的示例。
using com.ibm.msg.client.jms;
using com.ibm.msg.client.wmq.common;
using javax.jms;
using System;
class Program
{
static void Main(string[] args)
{
var ff = JmsFactoryFactory.getInstance(JmsConstants.__Fields.WMQ_PROVIDER);
var cf = ff.createConnectionFactory() as JmsConnectionFactory;
cf.setIntProperty(CommonConstants.__Fields.WMQ_CONNECTION_MODE, CommonConstants.__Fields.WMQ_CM_CLIENT);
cf.setStringProperty(CommonConstants.__Fields.WMQ_HOST_NAME, "<YOUR INFO>");
cf.setIntProperty(CommonConstants.__Fields.WMQ_PORT, 1414);
cf.setStringProperty(CommonConstants.__Fields.WMQ_CHANNEL, "<YOUR INFO>");
cf.setStringProperty(CommonConstants.__Fields.WMQ_QUEUE_MANAGER, "<YOUR INFO>");
var connection = cf.createConnection();
var session = connection.createSession(false, Session.__Fields.AUTO_ACKNOWLEDGE);
var queue = session.createQueue("queue:///<YOUR INFO>");
var producer = session.createProducer(queue);
var msg = session.createTextMessage();
msg.setStringProperty("JMSXGroupID", Guid.NewGuid().ToString());
msg.setIntProperty("JMSXGroupSeq", 1);
msg.setBooleanProperty("JMS_IBM_Last_Msg_In_Group", true);
msg.setText("Hello World");
connection.start();
producer.send(msg);
producer.close();
session.close();
connection.close();
}
}
【讨论】:
Windows 上有一个名为 amqmdnet.dll 的 IBM 提供的 dll(自 v5.3 Fixpack8 起),它是一个 .NET 程序集,为 MQSeries 提供 IBM 支持的模型。 (Reference) 通常位于C:\Program Files\IBM\WebSphere MQ\bin\amqmdnet.dll
如果您需要更多指导,有几个关于如何从 CodeProject 上的 .NET 与 MQ 通信的示例:
【讨论】: