Consultor Eletrônico



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 */