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(, ));
//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.
Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)的更多相关文章
- MSMQ(Microsoft Message Queue)
http://www.cnblogs.com/sk-net/archive/2011/11/25/2232341.html 利用 MSMQ(Microsoft Message Queue),应用程序开 ...
- 微软消息队列-MicroSoft Message Queue(MSMQ)队列的C#使用
目录 定义的接口 接口实现 建立队列工厂 写入队列 获取消息 什么是MSMQ Message Queuing(MSMQ) 是微软开发的消息中间件,可应用于程序内部或程序之间的异步通信.主要的机制是:消 ...
- MSMQ学习笔记二——创建Message Queue队列
一.创建Message Queue队列的主要流程 1.定义MQQUEUEPROPS 结构: 2.设置消息队列属性: 3.初始化MQQUEUEPROPS 结构: 4.调用MQCreateQueue创建队 ...
- 消息队列(Message Queue)简介及其使用
消息队列(Message Queue)简介及其使用 摘要:利用 MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息方便地与应用程序进行快速可靠的通信.消 ...
- Message Queue基本使用说明
一.安装Message Queue: 在Win7之前,控制面板,添加删除组件(Windows Message Queue). Win7~Win8:控制面板,程序和功能,启用或关闭Windows功能(找 ...
- 初识Message Queue之--基础篇
之前我在项目中要用到消息队列相关的技术时,一直让Redis兼职消息队列功能,一个偶然的机会接触到了MSMQ消息队列.秉着技术还是专业的好为原则,对MSMQ进行了学习,以下是我个人的学习笔记. 一.什么 ...
- DELPHI下的SOCK编程(转)
DELPHI下的SOCK编程 本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认为 ...
- DELPHI下API简述(1800个API)
DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属 ...
- 关于访问MSMQ远端私有队列的一点经验
这里应该将私有队列称做"专用队列"好像更贴切一些了,O(∩_∩)O 可以访问远程主机的MSMQ的私有队列的,这个是毋庸置疑的,但需要说明的是不能通过代码创建私有队列,关于这一点,我 ...
随机推荐
- bzoj5397 circular 随机化(
题目大意 给定一个环,环上有一些线段,试选出最多的线段 题解: 提醒:这可能是一篇非常欢乐的题解 我们考虑倍长环,然后断环为链 我们考虑枚举开头的线段,然后做一次贪心 这样子的复杂度根据实现的不同是\ ...
- nexus的jar包上传与下载
1. hosted,宿主仓库,部署自己的jar到这个类型的仓库,包括releases和snapshot两部分,Releases公司内部发布版本仓库. Snapshots 公司内部测试版本仓库 2. p ...
- BOM 浏览器对象模型_window.navigator
window.navigator 对象 包含浏览器和系统信息的 Navigator 对象. 通过这个属性 了解用户的环境信息 window.navigator.userAgent 返回浏览器的 Use ...
- 白盒测试实践-day04
一.任务进展情况 通过小组成员的共同努力,终于完成了此次“白盒测试实践”任务.目前的主要任务将之前的文件汇总,整理出来. 二.存在的问题 由于测试系统的不完善,导致单元测试比较麻烦. 三.解决方法 认 ...
- Hibernate--Day01
Hibernate是一个面向对象的持久化框架 持久化: 1,把内存中的Java对象保存到存储设备上面: 2,最好的解诀方案:把对象持久化到数据库里面: 3, 在Java里面,把对象持久化到数据库只能使 ...
- about this blog
这个博客大概是被我用来整理模板的吧╮(╯▽╰)╭ 因为本小盆友巨懒,99.9%是不会写什么题解或者学习笔记什么的
- 一篇文章学懂Shell脚本,最简明的教程在这里
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...
- Python初始环境搭建和Pycharm的安装
首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载.
- char和QChar(Unicode的编码与内存里的值还不是一回事)
char类型是c/c++中内置的类型,描述了1个字节的内存信息的解析.比如: char gemfield=’g’;那么在由gemfield标记的这块内存的大小就是1个字节,信息就是01100111,8 ...
- 在linux环境下部署禅道环境
下载禅道安装包: 1)cd /home/ 2)mkdir app 3)ls 4)cd app/ 5)pwd 6)wget +禅道地址(http://dl.cnezsoft.com/zentao/9.8 ...