介于阿里云的MNS收费超过预算,因此决定切换为自行搭建的RabbitMQ队列,费用能大幅度降低。

由于之前的代码很整齐规范,消息的发送和读取,与业务处理完全分开,因此切换起来毫不费力。

新增了几个公共类,将代码引用改掉,删除阿里云MNS的相关代码,即可完成队列切换。

1、RabbitMQ jar的版本为3.6.6

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>3.6.6</version>
</dependency>

2、类解释

RabbitMqConnUtil.java RabbitMQ连接工具类,包含创建连接的封装,连接池的封装,以及queue、exchange的存在判断封装。

RabbitMqProducer.java  发消息的工具类,实现了实时消息、延迟消息的发送。

RabbitMqCustomer.java 接收实时消息的基类,业务消费者只需要继承该类,并实现相应的业务方法。

RabbitMqCustomerDelay.java 接收延迟消息的基类,业务消费者只需要继承该类,并实现相应的业务方法。

RabbitMqFactory.java  用于项目中,消费者在服务启动后,连接队列监听消息使用。

OrderCustomer.java 接收实时消息的消费者(业务演示代码)。

OrderCustomerDelay.java 接收延迟消息的消费者(业务演示代码)。

3、注意事项

实现延迟消息时,生产者与消费者,在队列的命名规则,遵守统一的约定,否则消费者无法正常接收到延迟消息。

4、参考

延迟消息实现原理 参考  https://blog.csdn.net/u013256816/article/details/55106401

连接池实现 参考 https://www.cnblogs.com/skyfeng/p/rabbitmq.html

VirtualHost 解读 参考 https://blog.csdn.net/h996666/article/details/83304626

其他常见问题参考 https://blog.csdn.net/a1063916463/article/details/90288013

5、完整代码,参考附件

https://download.csdn.net/download/u011453631/12171877

6、不足

仅仅只是简单的切换,实现了消息的发送、接收,以及延迟消息。

未实现事务性消息,也没有采用广播、主题等方式。

阿里云 MNS 切换为 自建 RabbitMQ相关推荐

  1. 阿里云RDS与ECS自建库搭建主从复制

    前言 最近尝试在阿里云RDS与ECS自建库之间搭建主从复制,主要是想用于备份数据,所以对于同步一致性要求不是很高.模拟了几次,遇到的一些坑记录在这里,使用的是基于GTID的主从服务,关于GTID: M ...

  2. 初创企业选择阿里云服务器与传统自建服务器的对比与选择

    与普通的IDC机房或服务器厂商相比,阿里云提供的云服务器ECS具有高可用性.安全性和弹性的优势. 高可用性 相较于普通的IDC机房以及服务器厂商,阿里云使用更严格的IDC标准.服务器准入标准以及运维标 ...

  3. 基于阿里云RDS创建ECS自建从库

    使用阿里云ECS自建RDS MySQL从库 友情提示:安装MySQL软件步骤本文暂不介绍,安装完MySQL无需着急初始化数据库和启动服务.只需确保安装的MySQL版本不低于阿里云RDS MySQL版本 ...

  4. 阿里云数据库MYSQL和自建数据库的对比(附新手领取免费的一个月云服务器)

    首先云数据库在服务的可用性和数据可靠性方面基本可以完全保证,但是自建服务器就不行了,如果使用阿里云数据库出现了问题可以得到赔偿,自建数据库的话一切都要自己承担.另外,企业版数据库服务器的成本很高,如果 ...

  5. 阿里云RDS数据库与自建数据库做主从同步

    场景 购买了阿里云的RDS数据库,基础版,没有主备,有做本地备份,但是如果RDS宕机了没办法马上切到可用的数据库,为了系统的高可用和容灾,决定做一下RDS和自建数据库的主从同步(不购买RDS的高可用版 ...

  6. 阿里云自助建站+模板建站+功能定制建站如何选择,详细教程

    使用阿里云建网站的三种方式购买云服务器手动建站.云速成美站模板建站或者选择阿里云定制建站三种方式,站长分享利用阿里云创建网站的三种方式及优势对比: 阿里云建站方式介绍 使用阿里云建站可以有三种方式, ...

  7. 阿里云MNS Queue Rest API操作示例

    概述 阿里云消息服务(Message Service)是一种高效.可靠.安全.便捷.可弹性扩展的分布式消息服务.MNS能够帮助应用开发者在他们应用的分布式组件上自由的传递数据.通知消息,构建松耦合系统 ...

  8. 阿里云dataworks/maxcomputer和自建集群的对比

    云平台近几年在飞速发展,有些公司也会把自己的在线业务和离线数据业务迁移到阿里云上,一方面节省研发成本,另一方面服务更加稳定,下面我以自己粗浅的认识对比下两者. 2021年7月又换了一家公司,又用回了原 ...

  9. 阿里云Linux系统新手快速建站视频教程

    原文链接 [阿里云大学---云上建站快速入门:博客.论坛.CMS.电子商务网站统统搞定]  废话不多说,本教程将带领0基础新手朋友快速在阿里云ECS服务器上搭建常用的网站程序,如果有意见建议请在本帖或 ...

最新文章

  1. 小赋诗歌一首,以感学生时代结束
  2. Linux学习之033_2
  3. Action和Func的区别
  4. 浅析Mysql InnoDB存储引擎事务原理
  5. Java多线程初学者指南(12):使用Synchronized块同步变量
  6. 使用verilog实现基于FPGA的TDC设计
  7. oppo售后解锁恢复工具.zip_OPPO手机4个不为人知的小技巧,全知道的竟然不到1%,令人唏嘘...
  8. 郑州大学计算机学科导论,郑州大学计算机导论大一试题答案.doc
  9. Linux磁盘分区详解(parted)
  10. echarts如何获取后端的值_echarts图怎么用从后台获取的数据
  11. MATLAB经纬度转化
  12. 杰理之ANC降噪基本原理【篇】
  13. QQ聊天记录生成词云--WordCloud
  14. 男人不想打工一辈子,再忙也要读这10本书,提高情商智商
  15. 百利药业IPO过会:扣非后年亏1.5亿 奥博资本是股东
  16. 各种编码中使用到的工具类
  17. Esp8266学习搭建开发环境,开始一个“hellow world”串口打印。
  18. 内网端口映射详解(花生壳)
  19. Python:字符串中的方法--strip()
  20. Ubuntu18 安装SciDavis

热门文章

  1. U3D_关于UI中的锚点
  2. 华硕FX53VD6700笔记本如何u盘装系统win7教程
  3. 微信支付(2)---测试用例
  4. 图解八道经典指针笔试题
  5. android微信打出彩色字体,如何用微信打出颜色各异的字
  6. 服务器如何发挥最好的性能,一篇文章告诉你怎么发挥固态硬盘最大性能
  7. 如何将优酷KUX格式转换为MP4格式?
  8. Python深度学习-ch5深度学习用于计算机视觉
  9. 微信小程序自定义分享标题和图片
  10. 190321 逆向-花指令去除(脚本)