国王小组:开发数字货币交易所源码搭建交易所中需要使用的插件

简介: 永续合约/秒合约/合约交易所开发详情,永续合约/秒合约/合约交易所系统开发技术方案深入分析代币合约流动性质押挖矿分红系统开发实现技术原理及源码部署交易所系统开发如何开发?数字货币交易所系统开发成熟技术案例去中心化交易所系统开发技术原理丨数字货币去中心化交易所系统开发(说明案例)数字货币交易所系统 数字货币交易所系统开发成品案例 数字货币交易所现成源码部署交易所系统开发案例说明丨数字货币交易所系统开发技术方案详情

RabbitMQ 延迟消息插件
该插件将延迟消息(或预定消息)添加到 RabbitMQ。

用户可以声明一个具有 x-delayed-message 类型的交换,然后发布带有自定义标题 x-delay 的消息,该标题以毫秒为单位表示消息的延迟时间。该消息将在 x-delay 毫秒后被传递到相应的队列中。

永续合约/秒合约/合约交易所开发详情,永续合约/秒合约/合约交易所系统开发技术方案
深入分析代币合约流动性质押挖矿分红系统开发实现技术原理及源码部署
交易所系统开发如何开发?数字货币交易所系统开发成熟技术案例
去中心化交易所系统开发技术原理丨数字货币去中心化交易所系统开发(说明案例)
数字货币交易所系统 数字货币交易所系统开发成品案例 数字货币交易所现成源码部署
交易所系统开发案例说明丨数字货币交易所系统开发技术方案详情
数字货币交易所系统开发方案详细丨数字货币交易所开发成品技术源码
合约交易系统设计与开发|永续合约交易所搭建,合约平台开发|永续合约交易所开发技术|特点介绍
秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署
支持的 RabbitMQ 版本
此插件的最新版本以 RabbitMQ 3.10.x 为目标,早于 3.9.x 的系列不受支持。

支持的 Erlang/OTP 版本
此插件需要 Erlang 23.2 或更高版本,与 RabbitMQ 3.8.16+ 相同。

项目成熟度
该插件被认为是相当稳定的,只要用户了解其局限性,就有可能适合生产使用。

在其存在的 ~ 5 年中,它有一些问题和一个基本问题得到了修复。众所周知,它对一些用户来说工作得相当好。它也有已知的限制(见下面一节),包括那些与延迟和信息的复制以及延迟信息的数量有关的限制。

这个插件目前没有得到 Pivotal 的商业支持,但这并不意味着它将被放弃或 RabbitMQ 团队对未来改进它不感兴趣。然而,对于我们的小团队来说,这并不是一个高度优先事项。

因此,请用您的工作量来尝试一下,并由您自己决定。

安装
下载一个二进制版本
二进制版本是通过GitHub发布的。

与所有第三方插件一样,.ez 文件必须放在节点的插件目录中,并且可由 RabbitMQ 进程的有效用户读取。

要知道插件目录是什么,请使用 rabbitmq-plugins 目录

rabbitmq-plugins directories -s
启用插件
然后运行下面的命令。

rabbitmq-plugins enable rabbitmq_delayed_message_exchange
使用方法
要使用延迟消息功能,请声明一个类型为x-delayed-message的交换。

// ... 省略的代码 ...
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-delayed-type", "direct");
channel.exchangeDeclare("my-exchange", "x-delayed-message", true, false, args)。
// ... 更多代码 ...
请注意,我们传递了一个额外的头,叫做x-delayed-type,更多的内容在路由部分。

一旦我们声明了交换,我们就可以发布消息,提供一个标头,告诉插件要延迟多长时间。

// ...省略了代码 ...
byte[] messageBodyBytes = "delayed payload".getBytes("UTF-8")。
Map<String, Object> headers = new HashMap<String, Object>();
headers.put("x-delay", 5000);
AMQP.BasicProperties.Builder props = new AMQP.BasicProperties.Builder().headers(headers)。
channel.basicPublish("my-exchange", "", props.build(), messageBodyBytes)。

byte[] messageBodyBytes2 = "more delayed payload".getBytes("UTF-8")。
Map<String, Object> headers2 = new HashMap<String, Object>();
headers2.put("x-delay", 1000);
AMQP.BasicProperties.Builder props2 = new AMQP.BasicProperties.Builder().headers(headers2)。
channel.basicPublish("my-exchange", "", props2.build(), messageBodyBytes2)。
// ... 更多代码 ...
在上面的例子中,我们发布了两条消息,用x-delay头来指定延迟时间。在这个例子中,该插件将首先向我们的队列传递正文为 "更多延迟的有效载荷 "的消息,然后是正文为 "延迟的有效载荷 "的消息。

如果x-delay头不存在,那么该插件将继续无延迟地传送信息。

路由选择
这个插件允许通过x-delayed-type参数进行灵活的路由,这些参数可以在exchange.declaration中传递。在上面的例子中,我们使用 "直接 "作为交换类型。这意味着该插件将具有直接交换所显示的相同路由行为。

如果你想要一个不同的路由行为,那么你可以提供一个不同的交换类型,比如说 "主题"。你也可以指定由插件提供的交换类型。请注意,这个参数是必须的,而且必须指的是现有的交换类型。

性能影响
由于 "x-delayed-type "参数,人们可以用这个交换来代替其他交换,因为 "x-delayed-message "交换将只是作为代理。注意,如果你这样做,可能会有一些性能影响。

对于每个穿过 "x-delayed-message "交换的消息,该插件将尝试确定该消息是否必须过期,确保延迟在范围内,即:Delay > 0, Delay =< ?ERL_MAX_T(在Erlang中,计时器可以设置为未来的(2^32)-1毫秒)。

如果前面的条件成立,那么消息将被持久化到Mnesia,一些其他的逻辑将被启动,以确定这个特定的消息延迟是否需要取代当前的预定定时器,等等。

这意味着,虽然人们可以使用这种交换来代替直接或扇出交换(或任何其他交换),但它将比使用实际交换要慢。如果你不需要延迟消息,那么就使用实际的交换。

限制
延迟的消息被存储在一个Mn中。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7月前
|
存储 安全 区块链
DAPP质押代币项目系统开发/技术分析/源码搭建
Web3.0技术栈中,去信任的交互协议和平台、分布式存储、隐私计算是生态必须率先发展完备的核心技术
|
JSON 自然语言处理 API
国王小组:开发数字货币交易所轻松实现加密货币交易所的API
细丨数字货币交易所开发成品技术源码 合约交易系统设计与开发|永续合约交易所搭建,合约平台开发|永续合约交易所开发技术|特点介绍 秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署 海外版数字货币交易所系统开发(逻辑及功能)丨多语言数字货币交易所系统开发(案例及源码) 交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计 区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署 数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品 交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易
|
区块链 安全
交易所系统开发(项目案例)丨交易所系统开发(规则设计)丨交易所开发源码版及说明
The Conflux public chain adopts a lightweight consensus algorithm based on Block DAG implementation, which adopts a transaction sorting method based on DAG structure, namely Unconfirmed Transaction DAG (U-DAG), to sort and confirm the transactions of each block in the public chain.
|
存储 监控 算法
钱包交易所开发稳定版丨钱包交易所系统开发项目方案/案例详细/成熟技术/源码说明
  随着互联网的迅速发展,人们开始探索更加高效、安全和去中心化的应用。在这一背景下,区块链技术的出现为构建下一代去中心化应用程序(dapp)提供了新的思路和解决方案。
|
JavaScript 前端开发 算法
国王小组:开发数字货币交易所使用到的交易库
交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计 区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署 Uniswap交易所开发稳定版丨Uniswap交易所系统开发(开发模板)丨Uniswap交易所系统源码案例部署 数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品 交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易所系统源码平台 DAPP交易所系统开发(开发案例)丨DAPP交易所系统开发(源码及方案) DAPP数字货币交易所开发逻辑,DAPP数字货币交易所系统开发(案例及源码)
|
XML 区块链 数据格式
国王小组:开发数字货币交易所搭建的交易所分析器
数字货币交易所开发现成源码案例 数字货币交易所交易系统开发解决方案 数字货币交易所开发解决方案,数字交易系统搭建 交易所开发源码,数字货币永续合约交易平台搭建 数字货币交易平台开发_数字货币交易所系统搭建
国王小组:开发数字货币交易所搭建的交易所分析器
|
存储 自然语言处理 分布式数据库
交易所系统开发(成熟技术)丨交易所系统开发(海外版)丨交易所系统开发(多语言)丨交易所源码案例
  建立数据可信流通体系,增强数据的可用、可信、可流通、可追溯水平,是激活数据要素潜能、赋能实体经济的重要途径。区块链技术具有去中心化、共识机制、不可篡改、可以追溯、规则透明等特点。
|
Web App开发 监控 搜索推荐
现成数字货币交易所源码系统开发
现成数字货币交易所源码系统开发
现成数字货币交易所源码系统开发
|
存储 前端开发 JavaScript
秒合约交易所搭建,教程分享(国王小组)
秒合约交易所搭建,教程分享(国王小组)