Kbase P53538: Sonic 4GL adapter sending and receiving JMSCorrelationASByte
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  13/11/2003 |
|
Status: Unverified
GOAL:
Sonic 4GL adapter sending and receiving JMSCorrelationASBytes
FACT(s) (Environment):
Progress 9.1D
FIX:
/* Code example for sending and receiving JMSCorrelationASBytes
tested with 9.1D07 and SonicMQ 5.01 build 806 */
DEFINE VARIABLE pubsubsession AS HANDLE.
DEFINE VARIABLE consumerH AS HANDLE.
DEFINE VARIABLE messageH AS HANDLE.
DEF VAR scorID AS CHAR INITIAL "414D512049524F4E20202020202020203EFA809D00176893".
DEF VAR sendrawID AS RAW .
DEF VAR receivedrawID AS RAW.
DEF VAR ssend AS CHAR.
DEF VAR sreceived AS CHAR.
DEF VAR i AS INT.
i = 1.
DO WHILE i < (LENGTH (scorID) + 1) :
PUT-BYTE(sendrawID,i) = ASC(SUBSTRING(scorID,i,1)) .
i = i + 1 .
END.
i = 1 .
DO WHILE i < (LENGTH (scorID) + 1) :
ssend = ssend + STRING(CHR(get-byte(sendrawID,i))) .
i = i + 1 .
END.
MESSAGE "Sending: " ssend .
/* 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.
/* Start receiving messages */
RUN startReceiveMessages IN pubsubsession.
/* Create a text message */
RUN createTextMessage IN pubsubsession (OUTPUT messageH).
RUN setText IN messageH ("This is a test message.").
RUN setJMSCorrelationIDAsBytes IN messageH (sendrawID).
/* Creates a consumer for the reply */
RUN createMessageConsumer IN pubsubsession (
THIS-PROCEDURE, /* This proc will handle it */
"testHandler", /* 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*/
/* Publish the message onto the TestTopic topic. Handle the reply in the
testHandler internal procedure.
*/
RUN publish IN pubsubsession ("TestTopic", messageH, ?, ?, ?).
/* Wait forever to receive messages since "u1" is never applied. */
WAIT-FOR u1 OF THIS-PROCEDURE.
PROCEDURE testHandler:
DEFINE INPUT PARAMETER replyH AS HANDLE.
DEFINE INPUT PARAMETER msgConsumerH AS HANDLE.
DEFINE OUTPUT PARAMETER responseH AS HANDLE.
/* Display the reply from SonicMQ Should be same as sent. */
DISPLAY "reply text: " DYNAMIC-FUNCTION('getText':U IN replyH) FORMAT "X(30)".
receivedrawID = DYNAMIC-FUNCTION('getJMSCorrelationIDAsBytes':U IN replyH).
i = 1 .
DO WHILE i < (LENGTH (scorID) + 1) :
sreceived = sreceived + STRING(CHR(get-byte(receivedrawID,i))) .
i = i + 1 .
END.
MESSAGE "Received: " sreceived VIEW-AS ALERT-BOX.
RUN deleteMessage IN replyH.
END.