Consultor Eletrônico



Kbase P17808: How to end a wait-for condition in a SonicMQ Adapter client.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   17/02/2004
Status: Unverified

GOAL:

How to end a wait-for condition in a SonicMQ Adapter client.

FACT(s) (Environment):

Progress 9.1C

FACT(s) (Environment):

Progress 9.1D

FIX:

To end a wait-for condition, program the message handling procedure to test for a stop signal and apply the appropriate action.
The following code example demonstrates one way this functionality can be accomplished.

DEFINE VARIABLE ptpsession AS HANDLE.
DEFINE VARIABLE consumerH AS HANDLE.
DEFINE VARIABLE UniqueMessage AS INTEGER.
DEFINE VARIABLE counter AS INTEGER.
DEF VAR l-started AS LOGICAL.

/* Creates a session object. */
RUN jms/ptpsession.p PERSISTENT SET ptpsession ("-H localhost -S 5162 ").
RUN setBrokerURL IN ptpsession ("localhost:2506").
RUN beginSession IN ptpsession.
/* Messages are handled by the "Sample" procedure. */
RUN createMessageConsumer IN ptpsession (THIS-PROCEDURE,
"Sample",
OUTPUT consumerH).
RUN receiveFromQueue IN ptpsession ("test",
?,
consumerH).

RUN startReceiveMessages IN ptpsession.
l-started = YES.
REPEAT:
DO WHILE l-started ON STOP UNDO, LEAVE:
WAIT-FOR u1 OF THIS-PROCEDURE.
MESSAGE "deleting session" VIEW-AS ALERT-BOX.
RUN deleteSession IN ptpsession.
quit.
END. /* WHILE l-started */
IF error-status:ERROR THEN
DO:
MESSAGE "Raising STOP condition" VIEW-AS ALERT-BOX.

END.
END.

PROCEDURE Sample:
DEFINE INPUT PARAMETER messageH AS HANDLE.
DEFINE INPUT PARAMETER msgConsumerH AS HANDLE.
DEFINE OUTPUT PARAMETER replyH AS HANDLE.
DEF VAR vText AS CHARACTER.
MESSAGE DYNAMIC-FUNCTION('getjmsmessageid':U IN messageH).
ASSIGN vText = DYNAMIC-FUNCTION('getText' IN messageH).
IF vText = 'stop' THEN
DO:
APPLY "u1" TO THIS-PROCEDURE. /* Signal to stop */
END.
RUN deleteMessage IN messageH.
END.