Hello everyone.
I'm trying to understand where my problem is. Most of the time the code is working just fine, but sometimes it is waiting to be respond for a long-long time.
Sometimes the service, from which I'm waiting a respond is crushed. Is there any way to find out, that it crushed and don't wait for it?
Is there any lines (except SendWaitForReply(600000); and SLEEP(100);) that code from going on?
I've found such a function ReceiveTimeout in IMSMQBusAdapter Interface - if I put there any value - will it prevent form hanging?
CREATE(CC2);
CREATE(SBA);
CC2.AddBusAdapter(SBA,1);
OutMsg:= CC2.CreateoutMessage('Sockets://' + ... + ':' + ...);
OutStream := OutMsg.GetStream();
MessageBlob.Blob.CREATEINSTREAM(XMLStream);
COPYSTREAM(OutStream,XMLStream);
ReplyMsg := OutMsg.SendWaitForReply(600000);
IF NOT ISSERVICETIER THEN
ReplyStream := ReplyMsg.GetStream()
ELSE BEGIN
i := 0;
REPEAT
ReplyStream := ReplyMsg.GetStream();
IF ReplyStream.EOS THEN
Timeout := TRUE
ELSE BEGIN
SLEEP(100);
i += 1;
IF i = 100 THEN
Timeout := TRUE;
END;
UNTIL Timeout;
END;
I'm trying to understand where my problem is. Most of the time the code is working just fine, but sometimes it is waiting to be respond for a long-long time.
Sometimes the service, from which I'm waiting a respond is crushed. Is there any way to find out, that it crushed and don't wait for it?
Is there any lines (except SendWaitForReply(600000); and SLEEP(100);) that code from going on?
I've found such a function ReceiveTimeout in IMSMQBusAdapter Interface - if I put there any value - will it prevent form hanging?
CREATE(CC2);
CREATE(SBA);
CC2.AddBusAdapter(SBA,1);
OutMsg:= CC2.CreateoutMessage('Sockets://' + ... + ':' + ...);
OutStream := OutMsg.GetStream();
MessageBlob.Blob.CREATEINSTREAM(XMLStream);
COPYSTREAM(OutStream,XMLStream);
ReplyMsg := OutMsg.SendWaitForReply(600000);
IF NOT ISSERVICETIER THEN
ReplyStream := ReplyMsg.GetStream()
ELSE BEGIN
i := 0;
REPEAT
ReplyStream := ReplyMsg.GetStream();
IF ReplyStream.EOS THEN
Timeout := TRUE
ELSE BEGIN
SLEEP(100);
i += 1;
IF i = 100 THEN
Timeout := TRUE;
END;
UNTIL Timeout;
END;