问题描述
我想连接到 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 (将#修改为@)