Wieviel MSMQ benutzt wird, weiß ich nicht, aber die Verwendung ist recht simpel:
Delphi-Quellcode:
procedure TSample.Execute();
var
qi: IMSMQQueueInfo3;
ms: IMSMQMessage3;
qu: IMSMQQueue3;
vTransaction, vWantDestQueue: OleVariant;
vWantBody, vReceiveTimeout, vWantConnectorType: OleVariant;
begin
CoInitializeEx(
nil, COINIT_MULTITHREADED);
if TryCreateAndOpenQueue(qi, qu)
then begin
while not Terminated
do
try
vTransaction := OleVariant(MQ_SINGLE_MESSAGE);
vWantDestQueue := OleVariant(false);
vWantBody := OleVariant(true);
vReceiveTimeout := OleVariant(MSMQWAITTIME);
vWantConnectorType := OleVariant(false);
ms := qu.Receive(vTransaction, vWantDestQueue, vWantBody, vReceiveTimeout, vWantConnectorType);
if Assigned(ms)
then
TuIrgendwasmitDerNachricht(ms);
except on e:
Exception do begin
break;
end;
end;
end;
if Assigned(qu)
then
qu.Close();
CoUninitialize();
end;
Dies ist das Empfangen von Nachrichten innerhalb eines TThread-Executes, das Senden ist einiges einfacher