求教, 几个MQI 连接的问题(变更)

[复制链接]
查看11 | 回复1 | 2008-3-26 17:07:00 | 显示全部楼层 |阅读模式
我的应用程序是一个交易转发接口,通过客户机连接到mq 服务端,本身接受tcp 请求,应用程序是个多进程程序,每个进程, 进程接到tcp 请求后, 通过MQCONN MQOPEN, MQPUT MQGET MQCLOSE ,MQDISC 等一系列动作完成一个发送/接收MQ操作, 再返回应答给前台,. 这样做每次收发都要执行 MQCONN, MQOPEN, MQCLOSE , MQDISC 操作, 代价比较大, 因此我把 MQCONN/MQDISCMQOPEN/MQCLOSE 对 放在了收发循环之外, 每个进程只建立一个MQ连接, 接收tcp 请求、 转发/接收mq 、应答tcp等操作作为一个单独的循环单元。这样的程序在服务器对服务器模式下, 通过使用触发器, 通道能够自动重起, 没发现什么问题。
但是在客户端对服务器的模式下,如果服务器和客户机出现了网络故障,服务器器和客户机的连接被破坏, 恢复后,除非我的程序重新启动,否则无法再连接服务器, 错误码是2009 ,
请问有什么办法保证在这种情况客户机和服务器能够自动恢复?或者能否提供一下如何在这类模式下提高性能? 不胜感激。
[ 本帖最后由 michael_cdh 于 2008-3-27 09:43 编辑 ]
回复

使用道具 举报

千问 | 2008-3-26 17:07:00 | 显示全部楼层
道理很简单,服务器对服务器情况下你的程序直接连接本机MQ服务器,走的是IPC资源,不会出现网络故障。客户端对服务器的时候走TCP/IP,只要有网络故障你就得重新连接,否则那个连接句柄就无效了。
根据以上原理,在客户端对服务器的结构下,MQ的连接句柄在出现网络问题后根本不可能自己恢复。我建议你使用全局数据结构定义你的连接句柄,同时定义单独的连接模块,在出现网络出现问题的时候再调用一次连接MQ服务器的函数,重新获得连接句柄。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行