我们目前正在建立一个需要传送给一些的IBM WebSphere队列的应用程序。在队列的另一端是另一个世界。由于一些未知的情况下(对我来说),连接到MQQueueManager需要每次17秒时,但发送和通过队列接收消息之后是不消耗工作的时间。正如我们现在将在WebSphere的前一个Web服务,我们想出了装饰和缓存MQQueueManagers和MQQueues和验证之前发送的每条消息,如果它们分别连接开放的理念;如果没有,我们尝试连接到MQQueueManager,repectively打开MQQUEUE(再次接法的MQQueueManager需要17秒,打开MQQUEUE是“即时”)。因此,我们期待的是,在每过一段时间的WebSphere会断开MQQueueManager(我不能肯定地告诉我们可以没有大量测试这个现在,但我们应该谨慎)和不吉利的调用程序将等待17秒重新连接。就目前情况来看,我们无法预测这件事的发生发生。 我们目前的实现使用的WebSphere MQ类的.NET。是否有可能为我们收到的回调通知时,MQQueueManager断开连接或相关联的队列被关闭?

有帮助吗?

解决方案

是的!如果您使用最新的WMQ .NET类和最新的 IA9H的SupportPac 你会得到一个异步回调方法。 (这个自带.NET示例代码展示了如何注册和使用回调)。这是我的理解,这种方法会通过你的回调例程的消息时有一个可用,否则传递一个例外注册的异常监听器连接是否丢失或队列被设置为GET(DISABLED)

获取最新WMQ客户这里。寻找具有类似名称MQC *的SupportPacs。的V8.0客户端是MQC8,在V9客户端是MQC9等

如果您有净WMQ类的旧版本,由于某种原因,你可以始终保持一个单独的线程开放,并定期轮询队列无法升级。不要轮询过于频繁,虽然。在过去,我见过的人使用一个类变量作为一个倒数计时器。每一个消息被成功检索或放入队列时间,计时器被复位到它的最大值。当计时器达到零,队列的查询。这样,你只有在没有其他流量的连接队列的查询。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top