如何解决为什么在连接到 IBM MQ 时会出现此错误?
我想连接到 IBM MQ,但出现错误
IBM.WMQ.MQException:'MQRC_NOT_AUTHORIZED'
上线
_queueManager = new MQQueueManager(managerName,connectionParameters);
我可以访问队列管理器。
这是 MQClient.cs 类:
public class MQClient: IMQClient
{
private MQQueueManager _queueManager;
private Hashtable _connectionParams;
private string _managerName;
private readonly Dictionary<string,CancellationTokenSource> _queueListeners = new Dictionary<string,CancellationTokenSource>();
public MQClient()
{
}
public IMQClient Connect(string managerName,Hashtable connectionParameters)
{
_managerName = managerName;
_connectionParams = connectionParameters;
_queueManager = new MQQueueManager(managerName,connectionParameters);
return this;
}
public IMQClient Connect(string managerName)
{
_managerName = managerName;
_connectionParams = GetConnectionParameters();
return Connect(managerName,_connectionParams);
}
private Hashtable GetConnectionParameters()
{
var parameters = new Hashtable
{
{MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES_CLIENT},{MQC.HOST_NAME_PROPERTY,AppSettings.MQ.Host},{MQC.PORT_PROPERTY,AppSettings.MQ.Port},{MQC.CHANNEL_PROPERTY,AppSettings.MQ.Channel}
};
if (!string.IsNullOrEmpty(AppSettings.MQ.User))
{
parameters.Add(MQC.USER_ID_PROPERTY,AppSettings.MQ.User);
}
return parameters;
}
这是界面:
public interface IMQClient : Idisposable
{
IMQClient Connect(string managerName,Hashtable connectionParameters);
IMQClient Connect(string managerName);
IMQClient StartReadingMessagesFromQueue(string queueName,Action<MQMessage> callback,int retryCount = 0,Thread threadToAbortOnException = null);
IMQClient StopReadingFromQueue(string queueName);
IMQClient StopReadingFromAllQueues();
IMQClient PutMessageInTopic(string topicName,string message);
IMQClient PutMessageInQueue(string queueName,string message);
}
这是 AppSettings.cs 中的 MQ 类:
public static class MQ
{
public static string Host { get; private set; }
public static int Port { get; private set; }
public static string Channel { get; private set; }
public static string Topic { get; private set; }
public static string Queue { get; private set; }
public static string User { get; private set; }
public static string Manager { get; private set; }
static MQ()
{
Host = ConfigurationManager.AppSettings["MQ.Host"];
Port = int.Parse(ConfigurationManager.AppSettings["MQ.Port"]);
Channel = ConfigurationManager.AppSettings["MQ.Channel"];
Topic = ConfigurationManager.AppSettings["MQ.Topic"];
User = ConfigurationManager.AppSettings["MQ.User"];
Queue = ConfigurationManager.AppSettings["MQ.Queue"];
Manager = ConfigurationManager.AppSettings["MQ.Manager"];
}
}
和电话:
static void Main(string[] args)
{
var mqClient = new MQClient();
mqClient.Connect("QMDEVEXT");
}
你能帮我吗?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。