安装 IBM WebSphere MQ:http://www-01.ibm.com/software/integration/wmq/explorer/downloads/

正确安装要注意几个地方,集群,通道发送方和通道接收方。

要想正确发送消息,必须具备以下条件:

1、传输队列。(本地队列,用法选传输)

2、消息通道(注意填写链接名称是对方IP,传输队列都填上)

3、远程队列(注意填写远程队列和远程队列管理器名称)

然后往远程队列里面填写数据,就会发送到远程的队列了!!

用C#连接IBMMQ需要引用以下几个DLL,该DLL在IBMMQ安装目录bin文件夹下!amqmdnet.dll,imqc23vn.dll,mqic32.dll,amqmdnet.dll

代码如下:

 using System;
using System.Collections.Generic;
using System.Text;
using IBM.WMQ.PCF;
using IBM.WMQ; namespace test
{ internal class IBMMQClass
{ public void CreateQueueManage(string qmName)
{ throw new Exception("不会创建!"); } /// <summary> /// 创建本地队列 /// </summary> /// <param name="qmName">队列管理器名称</param> /// <param name="queueName">本地队列名称</param> public void CreateQueue(string qmName, string queueName)
{ PCFMessageAgent agent = new PCFMessageAgent(qmName); PCFMessage request = new PCFMessage(CMQCFC.MQCMD_CREATE_Q); request.AddParameter(MQC.MQCA_Q_NAME, queueName); request.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_LOCAL); PCFMessage[] response = agent.Send(request); agent.Disconnect(); } /// <summary> /// 创建远程队列 /// </summary> /// <param name="qmName">队列管理器</param> /// <param name="queueName">队列名称</param> /// <param name="ycqmName">远程队列管理器名称</param> /// <param name="ycqueueName">远程队列名称</param> /// <param name="csqueueName">传输队列名称</param> public void CreateYuanchengQueue(string qmName, string queueName, string ycqmName, string ycqueueName, string csqueueName)
{ PCFMessageAgent agent = new PCFMessageAgent(qmName); PCFMessage request = new PCFMessage(CMQCFC.MQCMD_CREATE_Q); request.AddParameter(MQC.MQCA_Q_NAME, queueName); request.AddParameter(MQC.MQIA_Q_TYPE, MQC.MQQT_REMOTE); request.AddParameter(MQC.MQCA_REMOTE_Q_MGR_NAME, ycqmName); request.AddParameter(MQC.MQCA_REMOTE_Q_NAME, ycqueueName); request.AddParameter(MQC.MQCA_XMIT_Q_NAME, csqueueName); PCFMessage[] response = agent.Send(request); agent.Disconnect(); } /// <summary> /// 创建通道 /// </summary> /// <param name="isSend">True为发送方,false为接收方</param> public void CreateChannel(bool isSend)
{ PCFMessageAgent agent = new PCFMessageAgent("QM_zhang"); PCFMessage request = new PCFMessage(CMQCFC.MQCMD_CREATE_CHANNEL); request.AddParameter(CMQCFC.MQCACH_CHANNEL_NAME, "mama"); if (!isSend)
{ request.AddParameter(CMQCFC.MQIACH_CHANNEL_TYPE, MQC.MQCHT_RECEIVER); } else
{ request.AddParameter(CMQCFC.MQIACH_CHANNEL_TYPE, MQC.MQCHT_SENDER); request.AddParameter(CMQCFC.MQCACH_CONNECTION_NAME, "192.168.3.232"); request.AddParameter(CMQCFC.MQCACH_XMIT_Q_NAME, "bb"); } PCFMessage[] response = agent.Send(request); agent.Disconnect(); } /// <summary> /// 删除队列 /// </summary> /// <param name="qmName">队列管理器名称</param> /// <param name="queueName">队列名称</param> public void DeleteQueue(string qmName, string queueName)
{ PCFMessageAgent agent = new PCFMessageAgent(qmName); PCFMessage request = new PCFMessage(CMQCFC.MQCMD_DELETE_Q); request.AddParameter(MQC.MQCA_Q_NAME, queueName); PCFMessage[] response = agent.Send(request); agent.Disconnect(); } /// <summary> /// 发送消息 /// </summary> /// <param name="qmName">队列管理器</param> /// <param name="queueName">队列名称</param> /// <param name="body">消息内容</param> public void PutMessage(string qmName, string queueName, string body)
{ MQQueueManager qMgr = new MQQueueManager(qmName); MQQueue queue = qMgr.AccessQueue(queueName, MQC.MQOO_OUTPUT); try
{ MQMessage message = new MQMessage(); message.WriteString(body); message.Format = MQC.MQFMT_STRING; queue.Put(message); } catch { } finally
{ queue.Close(); } } /// <summary> /// 获取消息 /// </summary> /// <param name="qmName">队列管理器名称</param> /// <param name="queueName">队列名称</param> /// <returns>消息内容</returns> public string GetMessage(string qmName, string queueName)
{ MQQueueManager qMgr = new MQQueueManager(qmName); MQQueue queue = qMgr.AccessQueue(queueName, MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_FAIL_IF_QUIESCING); try
{ MQMessage message = new MQMessage(); queue.Get(message); return message.ReadString(message.MessageLength); } catch { } finally
{ queue.Close(); } } /// <summary> /// 获取消息 /// </summary> /// <param name="qmName">队列管理器名称</param> /// <param name="queueName">队列名称</param> /// <param name="timeInterval">等待时间(毫秒)</param> /// <param name="qMgr">队列管理器实体类</param> /// <returns>消息内容</returns> public string GetMessage(string qmName, string queueName, int timeInterval, out MQQueueManager qMgr)
{ MQQueueManager qMgr = new MQQueueManager(qmName); MQQueue queue = qMgr.AccessQueue(queueName, MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_FAIL_IF_QUIESCING); MQGetMessageOptions gmo = new MQGetMessageOptions(); gmo.Options = MQC.MQGMO_WAIT; gmo.WaitInterval = timeInterval; gmo.MatchOptions = MQC.MQMO_NONE; MQMessage message = new MQMessage(); queue.Get(message, gmo); return message.ReadString(message.MessageLength); } } }

C# 连接 IBM MQ的更多相关文章

  1. 连接IBM MQ原因码报2035的错误解决办法

    我们的系统使用了ibm mq,用户用来向国家局上报文件和接收文件,前几天用户说上报一直不成功.由于 开发这块程序的人已经辞职了,我觉定在我的机器部署一套,研究一下.我的思路: 在我的机器上安装mq,建 ...

  2. IBM MQ相关 ---- 系列文章

    原 IBM websphere MQ远程队列的简单配置 转 MQ7.5以后的权限问题解决 原 MQ--API总结 转 连接IBM MQ原因码报2035的错误解决办法 原 Java连接MQ的实例 转 通 ...

  3. IBM MQ 2035 或 2013认证错误的解决方法

    第一种方法: ALTER CHL(SYSTEM.BKR.CONFIG) CHLTYPE(SVRCONN) ALTER CHL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN ...

  4. IBM MQ 使用指南

    一.MQ基本操作 MQ中有几个很重要的组件:队列管理器(QueueManager).队列(Queue)和通道(Channel).其基本的操作方法如下:  1)创建队列管理器 crtmqm –q QMg ...

  5. (转)IBM mq基本使用

    一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...

  6. IBM MQ 集成CXF 发送JMS 消息

    0.POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...

  7. 用IBM MQ中间件开发碰到的MQRC_NOT_AUTHORIZED(2035)问题

    我在一台工作站上面部署了MQ服务器,在MQ服务器中我建立了队列管理器MQ_TEST,在该队列管理器中我建立了一个本地队列MQ_Q以及一个服务器连接通道MQ_C,MQ_C中的MCA用户标识默认为空.同时 ...

  8. 使用Loadrunner对IBM MQ进行性能测试

    一.概述         使用Loadrunner对IBM MQ进行性能测试,需要用到java vuser以及java编码知识.此次先介绍什么是IBM MQ,然后java vuser的使用与配置细节, ...

  9. IBM MQ + WebSphere + Spring JMS配置方法

    IBM MQ + WebSphere + Spring JMS配置方法  首先要在WAS里面配置IBM MQ作为JMS消息的提供者,在WAS管理控制台: Resources->JMS Provi ...

随机推荐

  1. leetcode36

    public class Solution { public bool IsValidSudoku(char[,] board) { ; i < ; i++) { var dic = new D ...

  2. 关于java中的OutOfMemory种类和解决方法

    1.OutOfMemory的三种情况 1) 永久区溢出 Exception in thread "main" java.lang.OutOfMemoryError: PermGen ...

  3. Dreamweaver 中文乱码

     定义当前页面的编码属性      Ctrl+j 标题/编码 将编码改成UTF8即可     PhpStorm    FILE->Setting->File Encoding->将U ...

  4. 简述amixer及其用法

    最近接触到amixer,大概明白了其意思和具体用法,简述如下. alsamixer是Linux 音频架构ALSA中的Alsa工具的其中一个,用于配置音频的各个参数. alsamixer是基于文本下的图 ...

  5. default of c#

    [default of c#] 在泛型类和泛型方法中产生的一个问题是,在预先未知以下情况时,如何将默认值分配给参数化类型 T: T 是引用类型还是值类型. 如果 T 为值类型,则它是数值还是结构. 给 ...

  6. Apache Hive (四)Hive的连接3种连接方式

    转自:https://www.cnblogs.com/qingyunzong/p/8715925.html 一.CLI连接 进入到 bin 目录下,直接输入命令: [hadoop@hadoop3 ~] ...

  7. JAVA中List的几个方法

    add()方法.插入某个位置的数据,他有两个参数一个参数是下标,一个参数是元素.需要注意的是下标大小应该小于等于List集合大小,否则就会抛出下标越界异常! 代码:    public static ...

  8. 【BZOJ1013】球形空间产生器sphere

    高斯消元模板题 #include <cstdio> #include <cstring> #include <algorithm> #include <ios ...

  9. Red Hat 6.5 Samba服务器的搭建(登录访问)

    搭建Samba服务器是为了实现Linux共享目录之后,在Windows可以直接访问该共享目录. 现在介绍如何在红帽6.5系统中搭建Samba服务. 搭建Samba服务之前,yum源必须配置好,本地源和 ...

  10. html 图片拖动不出来的脚本

    function imgdragstart() { return false; } $(function(){ for (i in document.images) document.images[i ...