异常后Websphere MQ isConnected变量

时间:2015-02-04 10:41:02

标签: c# ibm-mq

我使用C#控制台应用程序来放置和读取MQ的消息。 当应用程序启动时,它与MQ连接一次,然后应始终坚持连接。 该程序每30秒运行一次,检查队列或数据库中是否有新消息(将它们放入队列中),如果是真的则检查isConnected-variable。

  • 但是,如果Put / Get中出现异常(2009年 - 连接中断)会发生什么? isConnected会自动设置为false吗?
  • 连接是自动断开连接还是我必须在错误处理中调用Disconnect()?

谢谢!

1 个答案:

答案 0 :(得分:2)

要回答您的确切问题,对于使用MQQueue进行put / get的基本.net应用程序(非XMS),如果从底层API调用获得CERTAIN错误返回代码(表示连接问题),MQ将尝试MQBACK和您的MQDISC将导致连接句柄失效(IsConnected将返回false)并抛出异常。但是,如果在这些返回代码之外发生异常,则不会尝试对连接执行任何操作。

基本上,您不应该依赖于此行为对应用程序进行编码,而最简单的答案是,如果您获得与连接或队列管理器质量相关的异常,则始终断开连接。例如,没有消息可用等类型异常并不意味着您需要断开连接,但显然连接断开了。在断开连接的连接上调用disconnect是没有害处的。