消息队列(6)) -提供上层服务接口

本文描述了一种IT技术实践,通过DiskDataCenter类封装数据库和文件操作,提升上层应用的抽象性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

我们之前已经将 数据库 的操作 和文件的操作 都完成了, 但是对于上层调用来说, 并不关心是于数据库中存储数据还是往文件中存储数据, 因此 我们提供一个类, 封装一下 上述俩个类中的操作, 并将这个类 提供给上层调用

封装数据库与文件操作

package com.example.demo.mqServer.dataCenter;

import com.example.demo.Common.MqException;
import com.example.demo.mqServer.core.Binding;
import com.example.demo.mqServer.core.Exchange;
import com.example.demo.mqServer.core.MSGQueue;
import com.example.demo.mqServer.core.Message;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/*
* 管理所有硬盘上的数据
* 1: 数据库:  交换机 绑定 队列
* 2: 数据文件 : 消息
* 上层逻辑如果需要操作硬盘, 统一通过这个类来使用 , 上层代码不关系当前数据是存储在数据库还是文件中的*/
public class DiskDataCenter {
//    用来管理数据库中的数据
    private DataBaseManager dataBaseManager = new DataBaseManager();
//    用来管理数据文件中的数据
    private MessageFileManager messageFileManager = new MessageFileManager();
//    对上述实例进行初始化
    public void init(){
        dataBaseManager.init();
        messageFileManager.init();
    }
    // 封装交换机操作
    public void  insertExchange(Exchange exchange){
        dataBaseManager.insertExchange(exchange);
    }
    public void deleteExchange(String exchangeName){
        dataBaseManager.deleteExchange(exchangeName);
    }
    public List<Exchange> selectAllExchange(){
      return   dataBaseManager.selectAllExchanges();
    }
    // 封装队列操作
    public void insertQueue(MSGQueue queue){
        dataBaseManager.insertQueue(queue);
    }
    public void deleteQueue(String queueName){
        dataBaseManager.deleteQueue(queueName);
    }
    public List<MSGQueue> selectAllQueue(){
      return   dataBaseManager.selectAllQueues();
    }
    // 封装绑定操作
    public void insertBinding(Binding binding){
        dataBaseManager.insertBinding(binding);
    }
    public void deleteBinding(Binding binding){
        dataBaseManager.deleteBinding(binding);
    }
    public List<Binding> selectAllBinding(){
       return dataBaseManager.selectAllBindings();
    }
    // 封装消息操作
    public void sendMessage(MSGQueue queue, Message message) throws IOException, MqException {
        messageFileManager.sendMessage(queue, message);
    }

    public void deleteMessage(MSGQueue queue, Message message) throws IOException, ClassNotFoundException, MqException {
        messageFileManager.deleteMessage(queue, message);
        // 对于删除消息, 我们要查看是否需要垃圾回收
        if (messageFileManager.checkGC(queue.getName())) {
            messageFileManager.gc(queue);
        }
    }

    public LinkedList<Message> loadAllMessageFromQueue(String queueName) throws IOException, MqException, ClassNotFoundException {
        return messageFileManager.loadAllMessageFromQueue(queueName);
    }

}


由于之前我们已经分别测试过了,写入数据库与写入文件的操作, 在这里就不在继续测试这个类了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值