用delphi xe 开发rabbitmq应用(二)

2024-01-20 09:08
文章标签 应用 开发 rabbitmq delphi xe

本文主要是介绍用delphi xe 开发rabbitmq应用(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

properties(属性)是可以附加到在队列中结束的消息的attributes。这些不是任意的attributes,而是具有特定的定义。特别是,这些属性被定义为BASIC类的成员(即类#60)。 BASIC类是唯一具有属性的类。这些属性出现在内容标题帧的尾部。它们的规范分为两部分:

property flags(属性标志)

properties属性列表

属性标志用于指定属性列表中记录的14个属性中的哪一个。这些在属性标志中被编码为单独的位。 BASIC类定义按顺序列出属性(请参阅:),它按照在属性标志中引用它们的顺序。因此,属性标记八位字节:http://www.rabbitmq.com/resources/specs/amqp0-9-1.xml 

00010000 01000000(0x 10 40)引用14个属性中的2个:“delivery-mode”和“timestamp” ”。如果标志中的所有位都是“0”,则表示没有引用属性。

procedure TAMQPMessageProperties.LoadFromStream(AStream: TStream);
var
  Flags: UInt16;
begin
  AStream.ReadUInt16( Flags );
  if Flags and $8000 = $8000 then FContentType.LoadFromStream( AStream );
  if Flags and $4000 = $4000 then FContentEncoding.LoadFromStream( AStream );
  if Flags and $2000 = $2000 then FApplicationHeaders.LoadFromStream( AStream );
  if Flags and $1000 = $1000 then FDeliveryMode.LoadFromStream( AStream );
  if Flags and $0800 = $0800 then FPriority.LoadFromStream( AStream );
  if Flags and $0400 = $0400 then FCorrelationID.LoadFromStream( AStream );
  if Flags and $0200 = $0200 then FReplyTo.LoadFromStream( AStream );
  if Flags and $0100 = $0100 then FExpiration.LoadFromStream( AStream );
  if Flags and $0080 = $0080 then FMessageID.LoadFromStream( AStream );
  if Flags and $0040 = $0040 then FTimestamp.LoadFromStream( AStream );
  if Flags and $0020 = $0020 then FType.LoadFromStream( AStream );
  if Flags and $0010 = $0010 then FUserID.LoadFromStream( AStream );
  if Flags and $0008 = $0008 then FAppID.LoadFromStream( AStream );
  if Flags and $0004 = $0004 then FReserved.LoadFromStream( AStream );

end;

$8000用二进制表示就是1000 0000 0000 0000 ,C++语法形式为15<<1,从右向左移动15位。

$4000用二进制表示就是0100 0000 0000 0000 ,C++语法形式为14<<1,从右向左移动14位。余下类推。

这篇关于用delphi xe 开发rabbitmq应用(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625499

相关文章

线程池ThreadPoolExecutor应用过程

《线程池ThreadPoolExecutor应用过程》:本文主要介绍如何使用ThreadPoolExecutor创建线程池,包括其构造方法、常用方法、参数校验以及如何选择合适的拒绝策略,文章还讨论... 目录ThreadPoolExecutor构造说明及常用方法为什么强制要求使用ThreadPoolExec

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注