微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在连接到 IBM MQ 时会出现此错误?

如何解决为什么在连接到 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 举报,一经查实,本站将立刻删除。