zoukankan      html  css  js  c++  java
  • Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)

    网上关于消息队列技术原理说明的详细文档很多,但涉及到Delphi的具体实现很少,这是我从网上找了一上午的资料,自己整合和尝试的能运行的程序。

    打开控制面板->程序->添加组件,添加消息队列

    打开控制面板->计算机管理->服务与应用程序->消息队列,添加私有有消息Test.

    在Delphi中添加MSMQ控件, TMSMQMessage; TMSMQQueueInfo; TMSMQQueue; TMSMQEvent; 这些控件在Project->Import type Library里存在。

    unit Unit1;
    interface
    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,MSMQ_TLB,ComObj,StdCtrls,OleServer; 
    type
    TForm1 = class(TForm)
    MSMQMessage1: TMSMQMessage;
    MSMQQueueInfo1: TMSMQQueueInfo;
    MSMQQueue1: TMSMQQueue;
    MSMQEvent1: TMSMQEvent;
    Button1: TButton;
    edit1:TEdit;
    edit2: TEdit;
    Button2: TButton;
    lbl1: TLabel;
    lbl2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure MSMQEvent1Arrived(Sender: TObject; var Queue: OleVariant; Cursor: Integer);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var Form1: TForm1;
    implementation
    {$R *.dfm} 
    //发送消息
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     //确定消息队列路径
    MSMQQueueInfo1.PathName :='./Private$/Test';
    //远程机器名
    MSMQQueueInfo1.RemoteMachineName := '127.0.0.1' ;
    //消息内容
    (MSMQMessage1.DefaultInterface as IMSMQMessage).body :=edit1.Text;
    //连接到消息队列 MSMQQueue1.ConnectTo(MSMQQueueInfo1.Open(MQ_SEND_ACCESS, 0));
    //发送消息 MSMQMessage1.Send(MSMQQueueInfo1.Open(MQ_SEND_ACCESS, MQ_DENY_NONE));
    showmessage( '已经把信息入写入消息队列中 ');
    end;
    //接收消息
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    msmqqueueinfo1.PathName :='./Private$/Test'; msmqqueue1.Disconnect; msmqqueue1.ConnectTo(msmqqueueinfo1.Open(1, 0));
    //msmqqueue1.EnableNotification(MSMQEvent1.DefaultInterface); 
    end;
    //MSMQEvent事件 procedure TForm1.MSMQEvent1Arrived(Sender: TObject; var Queue: OleVariant; Cursor: Integer);
    var Msg: Variant;
    begin
    //从队列中读取消息
    Msg := msmqqueue1.Receive;
    edit2.Text := Msg.body;
    end;
    end. 
  • 相关阅读:
    Ubuntu系统下《汇编语言》环境配置

    GetDiskFreeSpaceEx的使用
    夏走了
    小笨妞
    项目管理怎么可以这样子!


    浪费
    查找文件夹
  • 原文地址:https://www.cnblogs.com/Master-Qi/p/10333753.html
Copyright © 2011-2022 走看看