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

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

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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
JSON 自然语言处理 API
国王小组:开发数字货币交易所轻松实现加密货币交易所的API
细丨数字货币交易所开发成品技术源码 合约交易系统设计与开发|永续合约交易所搭建,合约平台开发|永续合约交易所开发技术|特点介绍 秒合约交易所开发详细丨秒合约交易所系统开发详细及规则丨秒合约交易所系统源码部署 海外版数字货币交易所系统开发(逻辑及功能)丨多语言数字货币交易所系统开发(案例及源码) 交易所开发成品丨交易所系统开发(演示版)丨交易所APP源码设计 区块链交易所开发详细丨区块链交易所系统开发(开发方案)丨区块链交易所源码案例部署 数字货币交易所开发详情版丨数字货币交易所系统开发(web3.0技术开发)丨数字货币交易所开发源码成品 交易所APP开发功能丨交易所系统开发(成熟及案例)丨交易
|
11月前
|
存储 监控 算法
钱包交易所开发稳定版丨钱包交易所系统开发项目方案/案例详细/成熟技术/源码说明
  随着互联网的迅速发展,人们开始探索更加高效、安全和去中心化的应用。在这一背景下,区块链技术的出现为构建下一代去中心化应用程序(dapp)提供了新的思路和解决方案。
|
存储 前端开发 JavaScript
秒合约交易所搭建,教程分享(国王小组)
秒合约交易所搭建,教程分享(国王小组)
|
运维 监控 安全
秒合约交易所系统开发搭建,需要注意以下几点(国王小组)
秒合约交易所系统开发搭建,需要注意以下几点(国王小组)
|
消息中间件 存储 区块链
国王小组:开发数字货币交易所源码搭建交易所中需要使用的插件
永续合约/秒合约/合约交易所开发详情,永续合约/秒合约/合约交易所系统开发技术方案 深入分析代币合约流动性质押挖矿分红系统开发实现技术原理及源码部署 交易所系统开发如何开发?数字货币交易所系统开发成熟技术案例 去中心化交易所系统开发技术原理丨数字货币去中心化交易所系统开发(说明案例) 数字货币交易所系统 数字货币交易所系统开发成品案例 数字货币交易所现成源码部署 交易所系统开发案例说明丨数字货币交易所系统开发技术方案详情
|
自然语言处理 Oracle 安全
国王小组:数字货币交易所源码开发搭建中如何编译等价交换
DAPP数字货币交易所开发逻辑,DAPP数字货币交易所系统开发(案例及源码) DAPP交易所开发稳定版丨DAPP交易所系统开发(开发案例)丨DAPP交易所系统源码部署 数字货币去中心化交易所开发详情版丨数字货币去中心化交易所系统开发(原生开发)丨数字货币去中心化交易所现成源码模板 去中心化交易所开发丨去中心化交易所系统开发(功能及逻辑)丨去中心化交易所系统源码部署 海外版数字货币交易所系统开发(逻辑及功能)丨多语言数字货币交易所系统开发(案例及源码) 数字货币交易所系统开发(功能版)丨数字货币交易所开发源码案例部署 交易所系统开发(原生开发)丨 交易所系统开发(多语言)丨交易所源码详情 交易所
|
XML 区块链 数据格式
国王小组:开发数字货币交易所搭建的交易所分析器
数字货币交易所开发现成源码案例 数字货币交易所交易系统开发解决方案 数字货币交易所开发解决方案,数字交易系统搭建 交易所开发源码,数字货币永续合约交易平台搭建 数字货币交易平台开发_数字货币交易所系统搭建
国王小组:开发数字货币交易所搭建的交易所分析器
|
消息中间件 前端开发 Dubbo
国王小组:数字货币交易所搭建如何实现分布式部署
Java 交易所源码,前端APP使用uniapp开发,后端使用java开发,采用 Spring Cloud Alibaba 微服务架构,撮合引擎使用Disruptor高效内存队列,所有服务可以实现分布式部署,websocket推送通过增加一层路由服务实现分布式部署
|
Ubuntu 固态存储 网络安全
国王小组:数字货币交易所开发中使用的开源框架
永续合约/秒合约/合约交易所开发详情,永续合约/秒合约/合约交易所系统开发技术方案 深入分析代币合约流动性质押挖矿分红系统开发实现技术原理及源码部署 交易所系统开发如何开发?数字货币交易所系统开发成熟技术案例 去中心化交易所系统开发技术原理丨数字货币去中心化交易所系统开发(说明案例) 数字货币交易所系统 数字货币交易所系统开发成品案例 数字货币交易所现成源码部署 交易所系统开发案例说明丨数字货币交易所系统开发技术方案详情 数字货币交易所系统开发方案详细丨数字货币交易所开发成品技术源码 合约交易系统设计与开发|永续合约交易所搭建,合约平台开发|永续合约交易所开发技术|特点介绍