Java项目--仿RabbitMQ的消息队列--统一硬盘操作

发布于:2024-12-18 ⋅ 阅读:(160) ⋅ 点赞:(0)

目录

一、引言

二、DiskDataCenter类

1.实例化

2.封装交换机操作

3.封装队列操作

4.封装绑定操作

5.封装消息操作

三、总结


一、引言

  上一篇文章介绍了如何将消息文件存入硬盘的操作,这一篇文章就简单介绍一下统一硬盘操作。

二、DiskDataCenter类

1.实例化

    public DataBaseManager dataBaseManager = new DataBaseManager();
    public MessageFileManager messageFileManager = new MessageFileManager();

    public void init(){
        dataBaseManager.init();
        messageFileManager.init();
    }

2.封装交换机操作

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

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

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

3.封装队列操作

/*
    封装队列操作
     */
    public void insertQueue(MsgQueue queue) throws IOException {
        dataBaseManager.insertQueue(queue);
        messageFileManager.createQueueFile(queue.getName());
    }

    public void deleteQueue(String queueName) throws IOException {
        dataBaseManager.deleteQueue(queueName);
        messageFileManager.destroyQueueFile(queueName);
    }

    public List<MsgQueue> selectAllQueues(){
        return dataBaseManager.selectAllQueues();
    }

4.封装绑定操作

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

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

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

5.封装消息操作

/*
    封装消息操作
     */
    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);
    }

三、总结

  本篇文章涉及的内容十分简单,就是将我们前两篇文章所写的一些方法进行封装,实现统一硬盘的操作,下一篇文章我们将学习内存数据管理的相关操作,感谢观看!


网站公告

今日签到

点亮在社区的每一天
去签到