QueueManager.Disconnect()和QueueManager.Close()的区别?

时间:2015-11-13 18:54:52

标签: c# .net ibm-mq mq

我有一个代码,当连接断开或者抛出异常时会断开queuemanger

            if (queueManagerreceive != null)
            if (queueManagerreceive.IsConnected)
            {
                if (queuereceive != null)
                {
                    queuereceive.Close();
                }
                queueManagerreceive.Disconnect();
            }

当我有一个' MQRC_RECONNECT_TIMED_OUT'时,我对上面的代码有疑问。 例外,当它执行queuemanager.Disconnect()时会抛出异常" MQRC_CONNECTION_BROKEN"显然,当抛出异常时会抛出代码,所以当我使用queuemanager.Close()时,没有抛出异常,服务稳定。

有什么区别?我应该用什么来删除并重新创建一个新的连接?

请帮忙。

1 个答案:

答案 0 :(得分:3)

function social_icons( $menu_item_class='', $icon_class='', $title_class = ''){ $menu_item_class .= ($title_class != '') ? ' no-title' : ''; $original_class = $menu_item_class; // ADDED THIS LINE $social_network = array( 0=> array ( "title"=> "ello", "url"=>"envato" ), 1=> array ( "title"=> "vk", "url"=> "envato" ), 2=> array ( "title"=> "twitter", "url"=> "envato" ), 3=> array ( "title"=> "lastfm", "url"=> "envato" ) ); $social_icon_wrapper = ' string'; $type = ' string2'; $count = 4; if ( $count > 0 ) { ?> <div id="social-network"> <ul class="social-icons"> <?php foreach ($social_network as $i=>$sn ){ // var_dump($i); // this always returns fine $menu_item_class = $original_class; // ADDED THIS LINE if ( $i == 0 ) { $menu_item_class .= ' first'; } // for some reason this IF is always true if ( $i == ($count-1) ) { $menu_item_class .= ' last'; } ?> <?php if ( $sn['title'] == 'ello' ) { ?> <li class="<?php echo $menu_item_class; ?>"><a class="ello" href="https://ello.co/<?php echo $sn['url']; ?>"><span class="social-icon-wrapper<?php echo $type; ?>"><i class="<?php echo $icon_class; ?> social-ello"></i></span>ello</a></li><?php } ?> <?php if ( $sn['title'] == 'vk' ) { ?> <li class="<?php echo $menu_item_class; ?>"><a class="vk" href="https://vk.com/<?php echo $sn['url']; ?>"><span class="social-icon-wrapper<?php echo $type; ?>"><i class="<?php echo $icon_class; ?> social-vk"></i></span>vk</a></li><?php } ?> <?php if ( $sn['title'] == 'facebook' ) { ?> <li class="<?php echo $menu_item_class; ?>"><a class="facebook" href="https://www.facebook.com/<?php echo $sn['url']; ?>"><span class="social-icon-wrapper<?php echo $type; ?>"><i class="<?php echo $icon_class; ?> social-facebook"></i></span>facebook</a></li><?php } ?> <?php if ( $sn['title'] == 'pinterest' ) { ?> <li class="<?php echo $menu_item_class; ?>"><a class="pinterest" href="https://pinterest.com/<?php echo $sn['url']; ?>"><span class="social-icon-wrapper<?php echo $type; ?>"><i class="<?php echo $icon_class; ?> social-pinterest"></i></span>pinterest</a></li><?php } ?> <?php if ( $sn['title'] == 'twitter' ) { ?> <li class="<?php echo $menu_item_class; ?>"><a class="twitter" href="https://www.twitter.com/<?php echo $sn['url']; ?>"><span class="social-icon-wrapper<?php echo $type; ?>"><i class="<?php echo $icon_class; ?> social-twitter"></i></span>twitter</a></li><?php } ?> <?php if ( $sn['title'] == 'lastfm' ) { ?> <li class="<?php echo $menu_item_class; ?>"><a class="lastfm" href="http://www.last.fm/user/<?php echo $sn['url']; ?>"><span class="social-icon-wrapper<?php echo $type; ?>"><i class="<?php echo $icon_class; ?> social-lastfm"></i></span>lastfm</a></li><?php } ?> <?php } ?> </ul> </div> <?php } } social_icons(); 关闭所有已打开的队列/主题/处理并关闭与队列管理器的连接。在已断开连接的连接上调用MQQueueManager.Disconnect()有助于释放内部分配的任何资源。

Disconnect()方法实际上是它的基类的继承方法,此方法关闭MQQueueManager.Close已分配的所有内部对象。 。但是,您必须始终致电MQQueueManager而不是Disconnect,因为Close方法会关闭与队列管理器的连接,而Disconnect则不会。{/ p>

发生Close错误后,您必须使用新的MQQueueManager构造函数再次创建新连接。

您收到MQRC_RECONNECT_TIMED_OUT错误,表示已建立的连接已中断(无论出于何种原因),并且MQ客户端尝试重新连接30分钟但仍无法建立连接。您必须了解原因:

1)您的队列管理器是否长时间停机?

2)是否存在阻止与队列管理器连接的网络问题?

3)如果您正在使用多实例队列管理器,为什么应用程序没有连接到备用实例?