目录
[一. 封装接口](#一. 封装接口)
[1.1 初始化](#1.1 初始化)
[1.2 封装交换机](#1.2 封装交换机)
[1.3 封装消息队列](#1.3 封装消息队列)
[1.4 封装绑定关系](#1.4 封装绑定关系)
[1.5 封装消息](#1.5 封装消息)
封装所有硬件上面的操作,数据库和文件操作
一. 封装接口
封装这两个类中提供的方法
java
private DataBaseMange dataBaseMange = new DataBaseMange();
private MessageFileManager messageFileManager = new MessageFileManager();
- DataBaseMange 类:负责对交换机,队列,绑定进行管理
- MessageFileManager 类:负责对消息进行管理
1.1 初始化
初始化数据库,完成建表操作和放入一个默认交换机
java
public void init(){
dataBaseMange.init();
messageFileManager.init();
}
1.2 封装交换机
增加交换机
java
public void insertExchange(Exchange exchange){
dataBaseMange.insertExchange(exchange);
}
删除交换机
java
public void deleteExchange(String exchangeName){
dataBaseMange.deleteExchange(exchangeName);
}
查询所有的交换机
java
public List<Exchange> selectAllExchange(){
return dataBaseMange.selectAllExchange();
}
1.3 封装消息队列
db中增加消息队列并创建出数据文件和统计文件
java
public void insertMSGQueue(MSGQueue msgQueue) throws IOException {
dataBaseMange.insertMSGQueue(msgQueue);
//还需要创建出对应的文件
messageFileManager.createQueueFile(msgQueue.getName());
}
db中删除消息队列并清除掉相关的数据文件和统计文件
java
public void deleteMSGQueue(String msgQueueName) throws IOException {
dataBaseMange.deleteMSGQueue(msgQueueName);
messageFileManager.destroyFile(msgQueueName);
}
从db中查询出所有的消息队列
java
public List<MSGQueue> selectAllMSGQueue(){
return dataBaseMange.selectAllMSGQueue();
}
1.4 封装绑定关系
增加绑定关系
java
public void insertBinding(Binding binding){
dataBaseMange.insertBinding(binding);
}
删除绑定关系
java
public void deleteBinding(Binding binding){
dataBaseMange.deleteBinding(binding);
}
查询所有的绑定关系
java
public List<Binding> selectAllBinding(){
return dataBaseMange.selectAllBinding();
}
1.5 封装消息
针对消息队列中的消息做出处理
发送消息到队列
java
public void sendMessage(MSGQueue msgQueue, Message message) throws IOException, MqException {
messageFileManager.sendMessage(msgQueue, message);
}
从队列中删除消息
这里在每次删除消息之后,都会进行一次gc判断,如果gc满足,则会进行一次垃圾回收
java
public void deleteMessage(MSGQueue msgQueue,Message message) throws IOException, ClassNotFoundException, MqException {
messageFileManager.deleteMessage(msgQueue, message);
if(messageFileManager.checkGC(msgQueue.getName())){
messageFileManager.gc(msgQueue);
}
}
读取队列中所有消息
java
public LinkedList<Message> selectAllMessage(MSGQueue msgQueue) throws IOException, MqException, ClassNotFoundException {
return messageFileManager.loadAllMessageFromQueue(msgQueue.getName());
}
这里就是使用一个类,将两个部分整合到一起,对上层提供统一的调用接口