我有一个代码,当连接断开或者抛出异常时会断开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()时,没有抛出异常,服务稳定。
有什么区别?我应该用什么来删除并重新创建一个新的连接?
请帮忙。
答案 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)如果您正在使用多实例队列管理器,为什么应用程序没有连接到备用实例?