【问题标题】:Websphere MQ - MQQueueManager, keep it open or close after every connectionWebsphere MQ - MQQueueManager,每次连接后保持打开或关闭
【发布时间】:2015-03-16 20:42:41
【问题描述】:

我有一个连接到 Websphere MQ 的 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 对象(连接)时重用它?

【问题讨论】:

  • 我将 MqManager 实现为单例并且没有任何问题。您的问题与表现有关还是其他?
  • 不,我没有性能问题。只是想知道最佳做法是什么。

标签: c# ibm-mq


【解决方案1】:

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

队列也是如此,打开队列一次并继续放置/获取消息,一旦工作完成,关闭队列。

阅读这篇文章 ob MQ 最佳实践:http://www.ibm.com/developerworks/websphere/library/techarticles/0807_hsieh/0807_hsieh.html

【讨论】:

  • 在为每个请求线程创建新连接/MQQueueManager 时,除了连接池之外,还有其他方法可以提高性能吗?
  • 我必须与 seceral Queue Manager 建立多个连接。对象MQQueue 的最佳实践是什么。在整个应用程序生命周期中设置并保持连接为单例,并在应用程序关闭时处理连接?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多