前面已经使用数据库管理了交换机、绑定、队列,然后又使用了数据文件管理了消息。
那么,这里就创建一个类,讲之前的两个部分整合起来,对上层提供统一的一套接口,表示硬盘上存储的所有的类的信息。
/*
* 用这个类来管理所有硬盘上的数据
* 1.数据库:交换机、绑定、队列
* 2.数据文件:消息
* */
public class DiskDataCenter {
// 用这个示例来管理数据库中的数据
private DataBaseManger dataBaseManger = new DataBaseManger();
// 用这个表示数据文件中的数据
private MessageFileManger messageFileManger = new MessageFileManger();
public void init(){
// 针对上述的两个示例进行初始化
dataBaseManger.init();
messageFileManger.init();
}
/*封装数据库操作*/
// 封装交换机操作
public void insertExchange(Exchange exchange){
dataBaseManger.insertExchange(exchange);
}
public void deleteExchange(String exchangeName){
dataBaseManger.deleteExchange(exchangeName);
}
public List<Exchange> selectAllExchanges(){
return dataBaseManger.selectAllExchanges();
}
// 封装队列操作
public void insertQueue(MSGQueue queue){
dataBaseManger.insertQueue(queue);
}
public void deleteQueue(String queueName){
dataBaseManger.deleteQueue(queueName);
}
public List<MSGQueue> selectAllQueues(){
return dataBaseManger.selectAllQueues();
}
// 封装绑定操作
public void insertBinding(Binding binding){
dataBaseManger.insertBinding(binding);
}
public void deleteBinding(Binding binding){
dataBaseManger.deleteBinding(binding);
}
public List<Binding> selectAllBindings(){
return dataBaseManger.selectAllBindings();
}
/*封装消息操作*/
// 发送操作
public void sendMessage(MSGQueue queue, Message message) throws IOException, MqException {
messageFileManger.sendMessage(queue,message);
}
// 删除操作
public void deleteMessage(MSGQueue queue,Message message) throws IOException, ClassNotFoundException, MqException {
messageFileManger.deleteMessage(queue, message);
if (messageFileManger.checkGC(queue.getName())){
messageFileManger.gc(queue);
}
}
// 将信息加载到内存
public LinkedList<Message> loadAllMessageFromQueue(String queueName) throws IOException, MqException, ClassNotFoundException {
return messageFileManger.loadAllMessageFromQueue(queueName);
}
}
创建了这个类,我们就不用去直接调用DataBaseManager和MessageFileManager里面得方法了。