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 ...
随机推荐
- 使用ConfigFilter
ConfigFilter的作用包括: 从配置文件中读取配置 从远程http文件中读取配置 为数据库密码提供加密功能 1 配置ConfigFilter 1.1 配置文件从本地文件系统中读取 <be ...
- iOS设计模式(01):观察者
iOS设计模式(01):观察者 iOS-Observer-Pattern 什么是观察者模式 什么是观察者模式?你曾经订阅过报纸吗?在订阅报纸的时候,你不用去任何地方,只需要将你的个人地址信息以及订阅信 ...
- [Android]RecyclerView添加HeaderView出现宽度问题
通过getItemViewType方式判断HeaderView方式添加HeaderView的,结果发现有几个界面HeaderView宽度不能满屏. 于是对比了几种布局,发现LinearLayout为根 ...
- kubernetes 集群安全配置
版本:v1.10.0-alpha.3 openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -subj & ...
- Python与Go斐波那契数列
#!/usr/bin/env python # -*- coding: utf-8 -*- # 斐波那契数列 def fibonacci_sequence(num): aa = 0 b = 1 li ...
- C#的ComboBox学习使用2018.08.03
ComboBox是一个有下拉列表的文本显示框,其text为当前的文本,item属性为项 comboBox1.Items.Add("); id = comboBox1.Text; 可以采用se ...
- Apache Hive (二)Hive安装
转自:https://www.cnblogs.com/qingyunzong/p/8708057.html Hive的下载 下载地址http://mirrors.hust.edu.cn/apache/ ...
- 互联网大规模数据分析技术(自主模式)第五章 大数据平台与技术 第10讲 大数据处理平台Hadoop
大规模的数据计算对于数据挖掘领域当中的作用.两大主要挑战:第一.如何实现分布式的计算 第二.分布式并行编程.Hadoop平台以及Map-reduce的编程方式解决了上面的几个问题.这是谷歌的一个最基本 ...
- 各种mac软件地址
http://www.sdifenzhou.com/ 各种软件地址
- 嵌套列表的加权和 · Nested List Weight Sum
[抄题]: Given a nested list of integers, return the sum of all integers in the list weighted by their ...