2010-04-18 20:49:47 +02:00
|
|
|
program SimpleMessaging;
|
2010-04-19 00:54:48 +02:00
|
|
|
{$IFDEF FPC}
|
|
|
|
{$mode delphi}{$H+}
|
|
|
|
{$ELSE}
|
2010-04-18 20:49:47 +02:00
|
|
|
{$APPTYPE CONSOLE}
|
2010-04-19 00:54:48 +02:00
|
|
|
{$ENDIF}
|
2010-04-18 20:49:47 +02:00
|
|
|
uses
|
2010-04-19 00:54:48 +02:00
|
|
|
{$IFDEF FPC}
|
|
|
|
{$IFDEF UNIX}
|
|
|
|
cthreads,
|
|
|
|
{$ENDIF}
|
|
|
|
{$ENDIF}
|
2010-04-18 20:49:47 +02:00
|
|
|
SysUtils, StompClient, StompTypes;
|
|
|
|
|
|
|
|
procedure Example_Pub_Subscriber;
|
|
|
|
var
|
|
|
|
StompPub, StompSubscriber: IStompClient;
|
|
|
|
StompFrame: IStompFrame;
|
|
|
|
begin
|
|
|
|
WriteLn('==> Example_Pub_Subscriber');
|
|
|
|
StompSubscriber := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompSubscriber.Subscribe('/topic/dummy');
|
|
|
|
StompPub := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompPub.Send('/topic/dummy', 'Some test message');
|
|
|
|
repeat
|
|
|
|
StompFrame := StompSubscriber.Receive;
|
|
|
|
until Assigned(StompFrame);
|
|
|
|
WriteLn(StompFrame.GetBody); // Print "Some test message"
|
|
|
|
WriteLn;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Example_OnePub_TwoSubscriber;
|
|
|
|
var
|
|
|
|
StompPub, StompSub1, StompSub2: IStompClient;
|
|
|
|
StompFrame: IStompFrame;
|
|
|
|
begin
|
|
|
|
WriteLn('==> Example_OnePub_TwoSubscriber');
|
|
|
|
StompSub1 := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompSub2 := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompSub1.Subscribe('/topic/dummy');
|
|
|
|
StompSub2.Subscribe('/topic/dummy');
|
|
|
|
|
|
|
|
//
|
|
|
|
StompPub := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompPub.Send('/topic/dummy', 'First test message on a topic');
|
|
|
|
StompPub.Send('/topic/dummy', 'Second test message on a topic');
|
|
|
|
|
|
|
|
StompFrame := StompSub1.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.GetBody);
|
|
|
|
StompFrame := StompSub1.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.GetBody);
|
|
|
|
|
|
|
|
StompFrame := StompSub2.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.GetBody);
|
|
|
|
StompFrame := StompSub2.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.GetBody);
|
|
|
|
WriteLn;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Example_PointToPoint;
|
|
|
|
var
|
|
|
|
StompPub, StompSub1, StompSub2: IStompClient;
|
|
|
|
StompFrame: IStompFrame;
|
|
|
|
begin
|
|
|
|
WriteLn('==> Example_PointToPoint');
|
|
|
|
StompSub1 := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompSub2 := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompSub1.Subscribe('/queue/dummy');
|
|
|
|
StompSub2.Subscribe('/queue/dummy');
|
|
|
|
|
|
|
|
//
|
|
|
|
StompPub := StompUtils.NewStomp('127.0.0.1'); // default port
|
|
|
|
StompPub.Send('/queue/dummy', 'First test message on a queue');
|
|
|
|
StompPub.Send('/queue/dummy', 'Second test message on a queue');
|
|
|
|
|
|
|
|
StompFrame := StompSub1.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.Output);
|
|
|
|
StompFrame := StompSub1.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.Output);
|
|
|
|
|
|
|
|
StompFrame := StompSub2.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.Output);
|
|
|
|
StompFrame := StompSub2.Receive(2000);
|
|
|
|
if Assigned(StompFrame) then
|
|
|
|
WriteLn(StompFrame.Output);
|
|
|
|
|
|
|
|
WriteLn;
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
try
|
|
|
|
Example_Pub_Subscriber;
|
|
|
|
Example_OnePub_TwoSubscriber;
|
|
|
|
Example_PointToPoint;
|
|
|
|
except
|
|
|
|
on E: Exception do
|
|
|
|
WriteLn(E.ClassName, ': ', E.message);
|
|
|
|
end;
|
|
|
|
end.
|