Kbase P81817: SonicMQ adapter 4GL sample code running within appserver in stateless mode
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  26/05/2004 |
|
Status: Unverified
GOAL:
SonicMQ adapter 4GL sample code running within appserver in stateless mode
FACT(s) (Environment):
Progress 9.1D
FIX:
/* source of test.p */
DEFINE INPUT PARAMETER sid AS CHAR.
DEFINE VARIABLE pubsubsession AS HANDLE.
DEFINE VARIABLE consumerH AS HANDLE.
DEF VAR vstart AS INT.
DEF VAR jmsOK AS LOGICAL INITIAL TRUE.
/* Creates a session object. */
RUN jms/pubsubsession.p PERSISTENT SET pubsubsession ("-H localhost -S 5162 ").
RUN setBrokerURL IN pubsubsession ("localhost:2506").
RUN SETUSER IN pubsubsession ("Administrator").
RUN setPassword IN pubsubsession ("Administrator").
RUN beginSession IN pubsubsession.
/* receives from TestTopic */
RUN createMessageConsumer IN pubsubsession (
THIS-PROCEDURE, /* This proc will handle it */
"messageHandler", /* name of internal procedure */
OUTPUT consumerH).
RUN subscribe IN pubsubsession ("TestTopic", /* name of topic */
?, /* Subscription is not durable */
?, /* No message selector */
no, /* Want my own messages too */
consumerH). /* Handles the incoming messages*/
/* Start receiving requests */
RUN startReceiveMessages IN pubsubsession.
vstart = ETIME(YES).
/* Process requests forever. */
RUN waitForMessages IN pubsubsession ("inWait", THIS-PROCEDURE, ?).
IF NOT jmsOk THEN
DO:
RUN deleteSession IN pubsubsession.
END.
PROCEDURE messageHandler:
DEFINE INPUT PARAMETER requestH AS HANDLE.
DEFINE INPUT PARAMETER msgConsumerH AS HANDLE.
DEFINE OUTPUT PARAMETER replyH AS HANDLE.
DEF VAR mtext AS CHAR.
DEF VAR mylog AS CHAR.
mylog = sid + "log.txt" .
OUTPUT TO value(mylog) APPEND.
mtext = DYNAMIC-FUNCTION('getText':U IN requestH).
IF mtext = "quit" THEN DO :
jmsOK = FALSE.
END.
PUT UNFORMATTED "Got message from Server : " SESSION:SERVER-CONNECTION-ID " with : " sid SKIP .
PUT UNFORMATTED "At: " String(TIME,"hh:mm:ss") " : " ETIME " text: " mtext SKIP.
OUTPUT CLOSE.
RUN deleteMessage IN requestH.
END.
FUNCTION inWait RETURNS LOGICAL.
RETURN jmsOK.
END.
/* end source of test.p */
/* source of appserver 4GL client code */
DEFINE VARIABLE hAppSrv AS HANDLE NO-UNDO.
DEF VAR i AS INT.
DEF VAR s AS CHAR.
DEFINE VARIABLE ret AS LOGICAL NO-UNDO.
CREATE SERVER hAppSrv.
ret = hAppSrv:CONNECT ("-AppService asbroker1 -H localhost -S 5162","me","").
IF NOT ret THEN
RETURN ERROR "Failed to connect to AppServer".
RUN test.p ON SERVER hAppSrv ("x_client1").
PAUSE 1 NO-MESSAGE.
.
.
IF VALID-HANDLE(hAppSrv) THEN DO:
ret = hAppSrv:DISCONNECT().
DELETE OBJECT hAppSrv.
END.
/* end of source of appserver 4GL client code */