项目实战 — 消息队列(5){统一硬盘操作}

这篇具有很好参考价值的文章主要介绍了项目实战 — 消息队列(5){统一硬盘操作}。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前面已经使用数据库管理了交换机、绑定、队列,然后又使用了数据文件管理了消息。

那么,这里就创建一个类,讲之前的两个部分整合起来,对上层提供统一的一套接口,表示硬盘上存储的所有的类的信息。

项目实战 — 消息队列(5){统一硬盘操作},项目,消息队列,项目,java

/*
* 用这个类来管理所有硬盘上的数据
* 1.数据库:交换机、绑定、队列
* 2.数据文件:消息
* */
public class DiskDataCenter {
//    用这个示例来管理数据库中的数据
    private DataBaseManger dataBaseManger = new DataBaseManger();
//    用这个表示数据文件中的数据
    private MessageFileManger messageFileManger = new MessageFileManger();

    public void init(){
//        针对上述的两个示例进行初始化
        dataBaseManger.init();
        messageFileManger.init();
    }


    /*封装数据库操作*/
//    封装交换机操作
    public void insertExchange(Exchange exchange){
        dataBaseManger.insertExchange(exchange);
    }

    public void deleteExchange(String exchangeName){
        dataBaseManger.deleteExchange(exchangeName);
    }

    public List<Exchange> selectAllExchanges(){
        return dataBaseManger.selectAllExchanges();
    }

//    封装队列操作
    public void insertQueue(MSGQueue queue) throws IOException {
        dataBaseManger.insertQueue(queue);
//        创建队列的同时,不仅需要把队列对象写道数据库中,还需要创建出对应的目录和文件
        messageFileManger.createQueueFiles(queue.getName());
    }

    public void deleteQueue(String queueName) throws IOException {
        dataBaseManger.deleteQueue(queueName);
//        删除队列的同时,不仅需要把队列对象从数据库中删除,还需要删除出对应的目录和文件
        messageFileManger.destroyQueueFiles(queueName);
    }

    public List<MSGQueue> selectAllQueues(){
        return dataBaseManger.selectAllQueues();
    }

//    封装绑定操作
    public void insertBinding(Binding binding){
        dataBaseManger.insertBinding(binding);
    }

    public void deleteBinding(Binding binding){
        dataBaseManger.deleteBinding(binding);
    }

    public List<Binding> selectAllBindings(){
        return dataBaseManger.selectAllBindings();
    }


    /*封装消息操作*/
//    发送操作
    public void sendMessage(MSGQueue queue, Message message) throws IOException, MqException {
        messageFileManger.sendMessage(queue,message);
    }

//    删除操作
    public void deleteMessage(MSGQueue queue,Message message) throws IOException, ClassNotFoundException, MqException {
        messageFileManger.deleteMessage(queue, message);
        if (messageFileManger.checkGC(queue.getName())){
            messageFileManger.gc(queue);
        }
    }

//    将信息加载到内存
    public LinkedList<Message> loadAllMessageFromQueue(String queueName) throws IOException, MqException, ClassNotFoundException {
        return messageFileManger.loadAllMessageFromQueue(queueName);
    }

}

 创建了这个类,我们就不用去直接调用DataBaseManager和MessageFileManager里面得方法了。文章来源地址https://www.toymoban.com/news/detail-634913.html

到了这里,关于项目实战 — 消息队列(5){统一硬盘操作}的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 项目实战 — 消息队列(8){网络通信设计①}

    目录 一、自定义应用层协议 🍅 1、格式定义 🍅 2、准备工作 🎄定义请求和响应   🎄 定义BasicArguments 🎄 定义BasicReturns 🍅 2、创建参数类         🎄 交换机         🎄 队列         🎄 绑定         🎄发布消息         🎄 订阅消息         🎄确认应答

    2024年02月13日
    浏览(32)
  • 消息队列(三):硬盘管理

    我在第一章提到过:关于持久化那一块,在内存存储主要是获取比较方便,在硬盘上存储主要是为了长时间存储。 关于内存管理又分两部分:数据库管理和文件管理(主要是和消息有关)。 硬盘中的数据库管理其实在上一章的建库建表说过了,就这么几步,SQLite + MyBatis 几十

    2024年02月09日
    浏览(31)
  • 【项目实战】SpringBoot整合Kafka消息队列(基于KafkaTemplate和@KafkaListener实现)

    Apache Kafka是分布式发布-订阅消息系统。 它最初由LinkedIn公司开发,之后成为Apache项目的一部分。 Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 Apache Kafka与传统消息系统相比,有以下不同: 它将消息持久化到磁盘,因此可用于批量消

    2023年04月09日
    浏览(31)
  • 基于RabbitMQ的模拟消息队列之三——硬盘数据管理

    1.设计数据库 交换机、队列、绑定是交给数据库来管理的,所以,设计这三个表结构就够了,表的字段和核心类同名。 2.添加sqlite依赖 3.配置application.properties文件 4.创建接口MetaMapper 在mqserver包下新创建一个包,名字为mapper,在此包下,创建一个接口MetaMapper。添加注解@Mappe

    2024年02月10日
    浏览(65)
  • Flink订阅Kafka消息队列实战案例

    Kafka是一款开源的分布式消息系统,最初由LinkedIn公司开发并开源。它被设计用于处理海量的实时数据流,可以支持高吞吐量和低延迟的数据传输。 Kafka的设计主要目标是提供一个持久化的、高吞吐量的、可扩展的、分布式发布/订阅消息系统,以解决实时数据处理的需求。它

    2024年02月15日
    浏览(26)
  • 【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《Redis实战与进阶》 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.csdn.net/ 我们用的是云

    2024年02月20日
    浏览(37)
  • PHP使用Redis实战实录5:Redis实现消息队列

    PHP使用Redis实战实录系列 PHP使用Redis实战实录1:宝塔环境搭建、6379端口配置、Redis服务启动失败解决方案 PHP使用Redis实战实录2:Redis扩展方法和PHP连接Redis的多种方案 PHP使用Redis实战实录3:数据类型比较、大小限制和性能扩展 PHP使用Redis实战实录4:单例模式和面向过程操作

    2024年02月11日
    浏览(33)
  • 清空所有队列和消息的RabbitMQ操作指南

    RabbitMQ是一种功能强大的消息代理,用于在应用程序之间传递消息。有时候,我们可能需要清空RabbitMQ中的所有队列和消息,以便重新开始或进行测试。本文将介绍如何使用RabbitMQ的管理插件和AMQP协议来清空所有队列和消息。 步骤1:安装RabbitMQ管理插件 要使用RabbitMQ的管理插

    2024年02月06日
    浏览(30)
  • Go操作各大消息队列教程(RabbitMQ、Kafka)

    1.1 概念 ①基本名词 当前市面上mq的产品很多,比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐献给Apache的RocketMQ。甚至连redis这种NoSQL都支持MQ的功能。 Broker:表示消息队列服务实体 Virtual Host:虚拟主机。标识一批交换机、消息队列和相关对象。vhost是AMQP概念的基础,必须在链

    2024年02月11日
    浏览(22)
  • 【系统开发】尚硅谷 - 谷粒商城项目笔记(七):消息队列

    Docker中安装 下载镜像: docker pull rabbitmq:management 创建实例并启动: 4369 – erlang发现口 5672 --client端通信口 15672 – 管理界面ui端口 25672 – server间内部通信口 在web浏览器中输入地址:http://服务器ip:15672/ 输入默认账号: guest : guest overview :概览 connections :无论生产者还是消费者

    2024年02月12日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包