嗯,本来系统是异步的,现在要把异步做成同步.
你这个"通知另一个平台M"是什么意思?你的代码是“被通知”者,即接收方。
意思是:我通知M后,M要给我个回复.收到M的回复后我继续做下面的事情.M和我之间是通过网络通信.
因为现在涉及到3个系统,两个是自己的系统,另一个是别人的系统.假设这三个系统分别为N,Q,M
原来的实现方式是:
N把自己要发的消息,通过Q转换为XML格式发给M就算结束;
Q收到M的应答之后并将应答信息转换为TYPE形式给N,N根据M的结果做其他处理是另一个操作了
现在要把这两个异步的过程做成同步的,又不想动太多的东西.即要做成:
N把自己要发的消息,通过Q转换为XML格式发给M,并等待Q收到M的应答之后并将应答信息转换为TYPE形式给N,N根据M的结果做其他处理,这个是一个同步的过程.
我现在的想法是:
----平台N的操作
BEGIN
PROCA--- 通知另一个平台M(中间通过Q转换)
IF DBMS_PIPE.RECEIVE_MESSAGE('mytest',20) = 0--M如果在20秒返回了消息
THEN
..........
ELSE
.............
END IF;
END;
在上面的过程中,如果Q收到M的响应,立即向N发送一个 DBMS_PIPE.SEND_MESSAGE('mytest',0);如果M在20秒内收到就算成功.
现在有个大概想法......
多谢各位~! |