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

前言

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

封装数据库与文件操作

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);
    }

}


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

猜你喜欢

转载自blog.csdn.net/qq_56454895/article/details/132051312