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.
转载于:https://www.cnblogs.com/Coder-MIFir/p/10333753.html
Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)相关推荐
- MSMQ(MicroSoft Message Queue,微软消息队列)
MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位 ...
- linux下基于Posix message queue的同步消息队列的实现
/* 发送同步消息队列 */ _api int crtl_msgq_sync_send(crtl_mqd_t dst_mqd, const char *m_ptr, const size_t m_le ...
- MSMQ(Microsoft Message Queue)介绍
利用 MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信.消息处理为您提供了有保障的消息传递和执行许多业务处理的可靠的 ...
- Microsoft Message Queue(MSMQ:微软消息队列)简介
一.前言 最近在安装公司的一个产品时,接触到了MSMQ,在此对MSMQ做一个简单的介绍,以便各位能对它有一个快速.直观的认识.本文针对于Microsoft Message Queue,以下提到的消息队 ...
- DELPHI下的SOCK编程(转)
DELPHI下的SOCK编程 本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认 ...
- Android 系统(59)---Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)
Android开发:Handler异步通信机制全面解析(包含Looper.Message Queue) 前言 最近刚好在做关于异步通信的需求,那么,今天我们来讲解下Android开发中的Handler ...
- Message、Handler、Message Queue、Looper之间的关系
2019独角兽企业重金招聘Python工程师标准>>> 在单线程模型下,为了解决线程通信问题,Android设计了一个通信机制.Message Queue(消息队列), 线程间的通信 ...
- 远程调用服务(RPC)和消息(Message Queue)对比及其适用/不适用场合
在阿里的平台技术部参与开发了Dubbo(远程调用服务)和Napoli(消息解决方案),又给网站应用支持这2个产品很长一段时间,了解了这2个产品的实现及应用对这两个产品的用法. 大部分情况下," ...
- Delphi下的COM编程
Delphi通过向导可以非常迅速和方便的直接建立实现COM对象的代码,但是整个COM实现的过程被完全的封装,甚至没有VCL那么结构清晰可见. 一个没有C++下COM开发经验甚至没有接触过COM开发的D ...
最新文章
- 执行 pip3 install selenium 时出现 fail to create process
- Thread.yield()
- Java元组Tuple介绍与使用
- cmd指令大全指令_汇编语言常用指令大全
- Flutter列表ListView 使用概述
- spring session的生命周期
- 矩池云怎么上传文件夹
- HDU2042 不容易系列之二【递推】
- 基于jsp+servlet图书管理系统之后台用户信息修改操作
- POI中设置Excel单元格格式样式(居中,字体,边框等)
- 《JAVA程序设计教程 (第二版)雍俊海编著》pdf 附下载链接
- 计算机网络课程实验5——交换机VLAN
- ucserver admin.php,如何修改discuz管理员密码以及Ucenter初始管理密码
- selector wakeup
- python怎么画地球_python画天空怎么画?
- 科大讯飞语音识别_科大讯飞 语音识别_科大讯飞语音识别系统 - 云+社区 - 腾讯云...
- 网页中常用的web安全字体
- 摘抄自知乎--由华为裁员传闻引发的思考:年轻人如何避免中年危机?
- 学习:软件需求说明书(转)
- img的complete和onload