Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 通过Visual Basic 6检查队列管理器状态_Vb6_Ibm Mq - Fatal编程技术网

Vb6 通过Visual Basic 6检查队列管理器状态

Vb6 通过Visual Basic 6检查队列管理器状态,vb6,ibm-mq,Vb6,Ibm Mq,在打开队列之前,我必须检查IBM MQ队列管理器的状态。 我必须通过检查QMgr是否处于活动状态来创建请求程序应用程序,然后调用put msg或get message from MQ 是否可以检查状态 请分享一些代码片段 谢谢您不必在打开队列之前检查QMgr。正如我今天回答的,提出的设计是一个非常非常糟糕的设计。其效果是将异步消息传递转换回同步消息传递。这将消息生产者与消费者耦合起来,引入位置和解析依赖关系,打破集群,破坏WMQ的负载分布和平衡,将网络拓扑嵌入到应用程序中,并使整个系统变得脆弱。

在打开队列之前,我必须检查IBM MQ队列管理器的状态。 我必须通过检查QMgr是否处于活动状态来创建请求程序应用程序,然后调用put msg或get message from MQ 是否可以检查状态

请分享一些代码片段


谢谢

您不必在打开队列之前检查QMgr。正如我今天回答的,提出的设计是一个非常非常糟糕的设计。其效果是将异步消息传递转换回同步消息传递。这将消息生产者与消费者耦合起来,引入位置和解析依赖关系,打破集群,破坏WMQ的负载分布和平衡,将网络拓扑嵌入到应用程序中,并使整个系统变得脆弱。请不要责怪WMQ在故意破坏其所有最佳功能(实际队列/出列操作除外)后无法正常工作

如果您的请求者应用程序正在检查QMgr是否处于活动状态,则最好使用多实例连接名称和两个或更多功能等效的QMgr层来访问集群。只要其中一个QMGR启动,应用程序就会在它们之间循环,直到找到一个可以连接的QMGR

如果您的响应程序应用程序正在检查QMgr是否处于活动状态,那么您最好只是尝试连接。响应程序应用程序决不应故障转移到其他QMgr,因为这样做会破坏事务性,并可能导致队列无法服务。相反,只需确保每个队列至少有两个来自本地响应程序应用程序的输入句柄,这些应用程序不会跨QMGR进行故障转移。(如果QMgr本身使用硬件集群或多实例QMgr进行故障转移,则可以)


如果目的是在将消息放入队列之前检查队列上是否有打开的输入句柄,则更好的设计是让请求应用程序不关心消息路由到哪个队列实例,而是使用WMQ中内置的检测来重新启动失去输入句柄的响应程序应用程序,或者在无人接听时禁用队列。

您需要更具体地回答问题,否则很可能会被关闭。查看以获得帮助。Mani,更多详细信息将有所帮助。你到底想查什么?如果您可以连接到qmgr,那么就可以了(就状态而言)?我已经投票决定关闭,等待响应,以确定到底是什么驱动了在发布消息之前检查状态的要求。这有点设计不好的味道。一个监控应用程序只是连接和查询资料。业务应用程序只是连接并尝试放置/获取消息和处理异常。混合使用两者几乎总是不好的。谢谢Rob,有没有可能分享一些代码片段,这些代码片段会让我了解在启动任何获取或放置消息之前,我应该如何检查Qmgr状态。如果您连接成功,状态良好,请继续并放置消息。如果您尝试放置消息时收到错误代码,错误代码将告诉您放置失败的原因。还需要什么?为什么要在放置消息之前检查状态,以及检查的确切内容是什么?