C# 连接 IBM MQ
安装 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的更多相关文章
- 连接IBM MQ原因码报2035的错误解决办法
我们的系统使用了ibm mq,用户用来向国家局上报文件和接收文件,前几天用户说上报一直不成功.由于 开发这块程序的人已经辞职了,我觉定在我的机器部署一套,研究一下.我的思路: 在我的机器上安装mq,建 ...
- IBM MQ相关 ---- 系列文章
原 IBM websphere MQ远程队列的简单配置 转 MQ7.5以后的权限问题解决 原 MQ--API总结 转 连接IBM MQ原因码报2035的错误解决办法 原 Java连接MQ的实例 转 通 ...
- IBM MQ 2035 或 2013认证错误的解决方法
第一种方法: ALTER CHL(SYSTEM.BKR.CONFIG) CHLTYPE(SVRCONN) ALTER CHL(SYSTEM.ADMIN.SVRCONN) CHLTYPE(SVRCONN ...
- IBM MQ 使用指南
一.MQ基本操作 MQ中有几个很重要的组件:队列管理器(QueueManager).队列(Queue)和通道(Channel).其基本的操作方法如下: 1)创建队列管理器 crtmqm –q QMg ...
- (转)IBM mq基本使用
一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...
- IBM MQ 集成CXF 发送JMS 消息
0.POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
- 用IBM MQ中间件开发碰到的MQRC_NOT_AUTHORIZED(2035)问题
我在一台工作站上面部署了MQ服务器,在MQ服务器中我建立了队列管理器MQ_TEST,在该队列管理器中我建立了一个本地队列MQ_Q以及一个服务器连接通道MQ_C,MQ_C中的MCA用户标识默认为空.同时 ...
- 使用Loadrunner对IBM MQ进行性能测试
一.概述 使用Loadrunner对IBM MQ进行性能测试,需要用到java vuser以及java编码知识.此次先介绍什么是IBM MQ,然后java vuser的使用与配置细节, ...
- IBM MQ + WebSphere + Spring JMS配置方法
IBM MQ + WebSphere + Spring JMS配置方法 首先要在WAS里面配置IBM MQ作为JMS消息的提供者,在WAS管理控制台: Resources->JMS Provi ...
随机推荐
- 转 查看linux文件目录的大小和文件夹包含的文件数
du -sh 文件夹路径 查看linux文件目录的大小和文件夹包含的文件数 统计总数大小 du -sh xmldb/ du -sm * | sort -n //统计当前目录大小 并安大小 排序 du ...
- 将本地Jar包安装到maven仓库中去
开发中会遇到无法通过pom.xml下载jar包的情况,遇到这种情况我们可以手动在本地安装jar包到本地仓库中去,这样就可以下次再用到的话不用再次联网下载,具体以oracle的驱动包ojdbc6.jar ...
- Coursera连接不上(视频无法播放),修改hosts文件
视频问题 如果Coursera网站连接不上,或者视频加载不出来.可以通过如下方式进行配置: 一.找到hosts文件 Windows 系统, hosts文件位于: [C:\Windows\Syste ...
- TI XDC工具入门简介
1. XDC(Express DSP Component)是TI提供的一个命令行工具,它可以生成并使用实时软件组件包,它包括一系列工具,这些工具可以允许你将你的C语言代码组织成类似于java的包管理方 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十三周
java学习第十三周 本周,进行了对前六章知识点的小测试,在测试中我也发现了许多自己学习上存在的隐患,对一些知识点理解的太过粗略,没有很好的去记忆那些重要的小细节,把注意力过多的放在了 ...
- java基础之HashSet如何保证对象的唯一性
首先Set集合是无序的 不可重复的 add的时候判断对象是否重复是用的equals HashSet<String> 存储String类型的数据时是可以保证数据的唯一性的 因为String类 ...
- java动态规划取硬币问题
最近一直在研究动态规划的问题.今天遇到了取硬币问题. 其实动态规划还是,我从底部向顶部,依次求出每个状态的最小值,然后就可以标记上. 这道题目就是,假如有1,5,7,10这四种币值的硬币,我取14元, ...
- 273. Integer to English Words数字转为单词
[抄题]: Convert a non-negative integer to its english words representation. Given input is guaranteed ...
- 621. Task Scheduler CPU任务间隔分配器
[抄题]: Given a char array representing tasks CPU need to do. It contains capital letters A to Z where ...
- Windows ---- mysql 5.7 配置安装
去官网下载mysql 下载地址 https://dev.mysql.com/downloads/mysql/ 根据自己操作系统位数选择相对应的版本 点击Download下载 下载下来后是一 ...