C# Websphere MQ-MQQueueManager,在每次连接后保持其打开或关闭

C# Websphere MQ-MQQueueManager,在每次连接后保持其打开或关闭,c#,ibm-mq,C#,Ibm Mq,我有一个连接到WebSphereMQ的C#应用程序 基本上: MQEnvironment.Hostname = HostName; MQEnvironment.Channel = Channel; MQEnvironment.Port = Port; MQQueueManager queueManager = new MQQueueManager(QueueManagerName); using (MQQueue putQueue = queueManager.AccessQueue

我有一个连接到WebSphereMQ的C#应用程序

基本上:

 MQEnvironment.Hostname = HostName;
 MQEnvironment.Channel = Channel;
 MQEnvironment.Port = Port;
 MQQueueManager queueManager = new MQQueueManager(QueueManagerName);

 using (MQQueue putQueue = queueManager.AccessQueue(putQueueName, MQC.MQOO_OUTPUT))
 { 
 }

我的问题是:我是否应该为整个应用程序只创建一个MQQueueManager实例,并在每次需要放置消息或为每次调用创建新的MQQueueManager对象(连接)时重用它

除非您正在共享连接,否则请为每个线程创建MQQueueManager实例一次,并将其保留到您需要的时间,然后在工作完成时调用Disconnect方法。不要将实例保留到应用程序结束

类似地,对于队列,打开队列一次并继续放置/获取消息,一旦完成任务,关闭队列


阅读本文ob MQ最佳实践:

我将MqManager实现为单例,并且没有任何问题。您的问题与性能相关还是其他问题?不,我没有性能问题。我只是想知道最佳实践是什么。除了连接池之外,在为每个请求线程创建新连接/MQQueueManager时,还有其他提高性能的方法吗?我必须与seceral队列管理器建立多个连接。对象
MQQueue
的最佳实践是什么。在整个应用程序生命周期中设置并保持连接为单例,并在应用程序关闭时处理连接?