最近在做支付平台,在支付成功之后需要涉及15/15/30/180/1800/1800/1800/1800/3600s的阶梯性异步通知,实现方法应该有很多,公司大神推荐还是用MQ,MQ的优势消峰、降耦合,异步等大家应该都有所了解,了解activeMq  、Kafaka、rokectMQ、rabbitMQ,总结如下:

activeMq   老牌消息中间件,api全面,但是吞吐量不大

Kafaka      吞吐量大,但是数据无法保证不丢失,主要面向大数据

rokectMQ:吞吐量大,保证数据不丢失,并且支持分布式事物,但是商业版需要收费

rabbitMQ:基于Erlang语言,吞吐量大,数据不易丢失

最后选择rabbitMQ

rabbitMQ简介

RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言。

因为erlang语言产生就是为了解决电话网络高性能的需求,因此在分布式和并发方面RabbitMQ表现比较突出,了解RabbitMQ主要是需要了解Queue、exchange、生产者、消费者等,这里介绍的比较多

https://zhuanlan.zhihu.com/p/63700605

同步、异步、事务等的执行效率比较
https://juejin.im/post/5b54681bf265da0f82023014

安装rabbitMq

在linux内核的安装需要考虑linux的版本,我的是centeros8x,参考地址如下:https://www.cnblogs.com/yadongliang/p/12504187.html

rabbitmq和erlang版本对应关系(来自官方):

RabbitMQ version Minimum required Erlang/OTP Maximum supported Erlang/OTP Notes
3.8.4 21.3 23.x Erlang/OTP 23 compatibility notes
Erlang 22.x or 23.x is recommended
Erlang 22.x dropped support for HiPE
3.8.3 21.3 22.x Erlang 22.x is recommended.
3.8.2 Erlang 22.x dropped support for HiPE
3.8.1  
3.8.0  
3.7.26 21.3 22.x Erlang/OTP 20.x support is discontinued
3.7.25 Erlang 22.x dropped support for HiPE
3.7.24  
3.7.23  
3.7.22  
3.7.21  
3.7.20  
3.7.19  
3.7.18 20.3 22.x Erlang/OTP 22.0 compatibility notes
3.7.17 TLSv1.0 and TLSv1.1 support is disabled by default on Erlang 22.x
3.7.16  
3.7.15  
3.7.14 20.3 21.x Erlang/OTP 19.x support is discontinued
3.7.13 For the best TLS support, the latest version of Erlang/OTP 21.x is recommended
3.7.12  
3.7.11  
3.7.10 19.3 21.x Erlang/OTP 21.0 compatibility notes
3.7.9
3.7.8
3.7.7
3.7.6 19.3 20.x For the best TLS support, the latest version of Erlang/OTP 20.x is recommended
3.7.5 Erlang versions prior to 19.3.6.4 have known bugs (e.g. ERL-430ERL-448) that can prevent RabbitMQ nodes from accepting connections (including from CLI tools) and stopping
3.7.4 Versions prior to 19.3.6.4 are vulnerable to the ROBOT attack (CVE-2017-1000385)
3.7.3 On Windows, Erlang/OTP 20.2 changed default cookie file location
3.7.2  
3.7.1  
3.7.0  

延迟队列的实现方法

rabbitmq延迟队列的实现方法有两种,死信和延迟队列插件的方案,我选择的是延迟队列,这个需要下载插件

本来rabbitmq和x-delayed-message插件的对应关系如下:

插件   rabbitmq
     3.6.x          3.8.x
    3.6.x          3.7.x
     3.5.x          3.7.x
     =< 3.4.x     3.6.16

但我发觉并没有什么卵用,我最先安装3.6.x版本的结果报错:

Request to node [email protected] failed with {'EXIT',
{function_clause,
[{rabbit_exchange_type_delayed_message,
validate,
[{exchange,
{resource,<<"/">>,
exchange,<<"top">>},
'x-delayed-message',
true,false,false,[],
undefined,undefined,........................

截图如下:

rabbitMQ学习的点点滴滴

升级到最新版的插件rabbitmq_delayed_message_exchange-3.8.0.ez解决问题,具体命令如下:

进入rabbit安装目录:cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.1/plugins
获取插件:wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.8.0/rabbitmq_delayed_message_exchange-3.8.0.ez

启动插件 rabbitmq-plugins enable rabbitmq_delayed_message_exchange
关闭插件 rabbitmq-plugins disable rabbitmq_delayed_message_exchange
参考地址:https://blog.csdn.net/skiof007/article/details/80914318

 

 

相关文章:

  • 2021-10-05
  • 2021-10-28
  • 2021-01-31
  • 2018-01-04
  • 2021-12-20
  • 2020-04-09
  • 2021-09-19
  • 2021-10-19
猜你喜欢
  • 2021-08-05
  • 2021-09-13
  • 2020-10-24
  • 2021-09-17
  • 2021-12-09
  • 2021-10-17
  • 2021-12-03
  • 2021-09-17
相关资源
相似解决方案