如何使用c#.net连接ibm websphere mq

可以任何人指导我,通过使用c#.net连接到ibm websphere mq,原因是我试图将消息推送到MQ,请任何给我建议连接使用c#.net

在Windows上有一个IBM提供的dll(自v5.3 Fixpack8),名为amqmdnet.dll,它是一个.NET程序集,为MQSeries提供IBM支持的模型。 ( 参考 )它通常位于C:\Program Files\IBM\WebSphere MQ\bin\amqmdnet.dll

如果您需要更多指导,有几个关于如何在CodeProject上与.NET通信的示例:

  1. http://www.codeproject.com/Articles/12198/IBM-WebSphere-MQ-with-C-GUI-application-that-is-bo
  2. http://www.codeproject.com/Articles/37807/How-to-Setup-a-Websphere-MQ-with-C-NET-GUI-to-Put
  3. http://www.codeproject.com/Articles/6212/C-and-WebSphere-MQ-formerly-MQSeries-Client-Server

此外,这个演练可能会有所帮助: http : //www.c-sharpcorner.com/UploadFile/pk_khuman/AquickstartCsharpWebsphereMQ07112006024017AM/AquickstartCsharpWebsphereMQ.aspx

您可以使用IBM提供的.NET库进行连接; 但是,它们要求您在部署解决方案的每台服务器上安装WebSphere MQ Client。 (瘸)

如果使用WebSphere MQ,则必须使用WebSphere MQ Client V7.0.1.0或更高版本安装用于运行XMS应用程序的计算机

您可以通过使用IKVM(www.ikvm.net)转换一些Java库来避免这种情况。

整个过程只需要大约15分钟

您仍然需要在开发盒上下载并安装客户端,以便获取JAR文件。 转换后,您可以卸载客户端。

这是步骤

1)获取JAR

  • 下载WebSphere MQ V7.5客户端: http ://www-304.ibm.com/support/docview.wss?uid = swg24032744
  • 安装MQ客户端:您只需安装“Java和.Net Messaging和Web服务”。
  • 特征

2)转换JAR

  • 下载IKVM:www.ikvm.net
  • 提取IKVM文件(例如c:\ tools \ IKVM)
  • 打开Win命令提示符
    • 执行命令: set path =%path%; c:\ tools \ IKVM \ bin
    • 执行命令: cd C:\ Program Files(x86)\ IBM \ WebSphere MQ \ java \ lib
    • 执行命令: ikvmc -target:library -sharedclassloader {com.ibm.mq.jmqi.jar} {com.ibm.mqjms.jar} {dhbcore.jar} {jms.jar}

3)复制JAR

  • 打开Windows资源管理器。
  • 导航到: C:\ Program Files(x86)\ IBM \ WebSphere MQ \ java \ lib
  • 复制以下文件:
    • ** com.ibm.mq.jmqi.dll
    • com.ibm.mqjms.dll
    • jms.dll **
  • 导航至: c:\ tools \ IKVM \ bin
  • 复制以下文件:
    • ** IKVM.Runtime.dll
    • IKVM.OpenJDK.Core.dll **
  • 将复制的文件移动到项目/解决方案中的第三方文件夹。

4)参考JAR

  • 引用复制的JAR。 请注意,如果您愿意,可以跳过上面的复制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, ""); cf.setIntProperty(CommonConstants.__Fields.WMQ_PORT, 1414); cf.setStringProperty(CommonConstants.__Fields.WMQ_CHANNEL, ""); cf.setStringProperty(CommonConstants.__Fields.WMQ_QUEUE_MANAGER, ""); var connection = cf.createConnection(); var session = connection.createSession(false, Session.__Fields.AUTO_ACKNOWLEDGE); var queue = session.createQueue("queue:///"); 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(); } } 

MQ产品安装附带的样本数量很多。 请参阅Nmqsput.cs以了解您的情况。 创建新项目时,您需要添加amqmdnet.dll作为参考。

不确定您使用的是哪个版本的MQ。 我假设您使用的是MQ v701。 您可以在MQ安装的tools文件夹下找到示例。

如果在C#中寻找JMS的消息传递方式,那么XMS .NET值得关注。 您可以在与MQ样本相同的文件夹中找到XMS .NET的示例。 XMS .NET参考在这里