【消息队列开发】 实现DiskDataCenter类——管理所有硬盘上的数据

🍃前言

本次开发目标:实现 DiskDataCenter 类

  • 使用这个类来管理所有硬盘上的数据.
    1. 数据库: 交换机, 绑定, 队列
    1. 数据文件: 消息
  • 上层逻辑如果需要操作硬盘, 统一都通过这个类来使用. (上层代码不关心当前数据是存储在数据库还是文件中的)

🎄实现思路

实现步骤大致可分为五步

  1. 创建实例与初始化

  2. 封装交换机操作

  3. 封装队列操作

  4. 封装绑定操作

  5. 封装消息操作

🚩创建实例与初始化

我们对前面我们所封装的两个类 :DataBaseManager 和 MessageFileManager 类

进行实例化,并对这两个实例提供一个初始化的方法

这里需要注意的是

  • 我们再MessageFileManager类中并没有提供初始化方法,所以我们这里虽然调用,但是该方法为空,可以方便后续拓展

代码实现如下:

// 这个实例用来管理数据库中的数据
private DataBaseManager dataBaseManager = new DataBaseManager();
// 这个实例用来管理数据文件中的数据
private MessageFileManager messageFileManager = new MessageFileManager();

public void init() {
    // 针对上述两个实例进行初始化.
    dataBaseManager.init();
    // 当前 messageFileManager.init 是空的方法, 只是先列在这里, 一旦后续需要扩展, 就在这里进行初始化即可.
    messageFileManager.init();
}

🚩封装交换机操作

创建三个方法,作用分别为

  • 添加交换机
  • 删除交换机
  • 查询交换机

分别调用 DataBaseManager 类的相应方法即可

代码实现如下:

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

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

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

🚩封装队列操作

创建三个方法,作用分别为

  • 添加队列
  • 删除队列
  • 查询队列

添加队列时,不仅仅是把队列对象写到数据库中, 还需要创建出对应的目录和文件

删除队列的同时, 不仅仅是把队列从数据库中删除, 还需要删除对应的目录和文件

查询队列时,直接返回即可

代码实现如下:

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

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

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

🚩封装绑定操作

创建三个方法,作用分别为

  • 添加绑定
  • 删除绑定
  • 查询绑定

直接调用 DataBaseManager 类的相应的方法即可

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

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

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

🚩封装消息操作

创建三个方法,作用分别为

  • 添加消息
  • 删除消息
  • 查询消息

关于添加消息,只需要调用 MessageFileManager 类将消息写入文件的方法即可

删除消息是,除了调用MessageFileManager 类删除消息的方法,我们还需要 调用是否进行 GC进行GC的方法

查询消息时,直接调用返回即可

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

⭕总结

关于《【消息队列开发】 实现DiskDataCenter类——管理所有硬盘上的数据》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
消息队列是一种在系统中实现异步通信的技术,它可以用于构建银行管理系统的各种功能。以下是一个使用消息队列实现的简单银行管理系统的示例: 1. 创建消息队列:首先,我们需要设置一个消息队列,比如使用开源的消息队列系统如RabbitMQ或Kafka。通过这个消息队列,不同的组件可以通过发布和订阅消息的方式进行通信。 2. 客户交互:银行管理系统可以通过一个前端界面与客户进行交互。当客户发起某个操作请求时,如存款、取款或转账,前端界面将该请求发送到消息队列中。 3. 业务逻辑处理:后端系统的服务组件将从消息队列中订阅客户请求的消息。服务组件将根据接收到的消息执行相应的业务逻辑操作,如验证客户身份、检查账户余额等。 4. 数据更新:一旦业务逻辑操作完成,服务组件将会更新数据库或其他持久化存储来反映银行账户的状态更改。 5. 通知客户:一旦数据更新完成,服务组件可以将结果发送到消息队列中。这些结果可以是成功或失败的操作通知,或者是账户余额变动的通知等。 6. 客户反馈:客户可以通过前端界面订阅结果通知的消息,并获得相应的反馈信息。 使用消息队列可以带来以下好处: - 异步处理:系统的各个组件可以独立工作,不需要等待其他组件的响应,提高了系统的响应速度和吞吐量。 - 高可用性:即使某个组件出现故障,消息队列可以保证消息不会丢失,并且可以重试失败的操作。 - 松耦合:消息队列解耦了不同组件之间的直接依赖关系,使得系统更加灵活和可扩展。 当然,这只是一个简单的示例,实际的银行管理系统可能会更加复杂,并涉及到更多的功能和流程。但是使用消息队列作为通信机制可以提供一个可靠和高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇事问春风乄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值