代码地址是 git@github.com:tuyf/simpleMq.git
代码存在环境以及部分引用问题,请自行解决。
代码中频繁出现: try-with-resources语句
try-with-resources语句是一种声明了一种或多种资源的try语句。资源是指在程序用完了之后必须要关闭的对象。try-with-resources语句保证了每个声明了的资源在语句结束的时候都会被关闭。任何实现了java.lang.AutoCloseable接口的对象,和实现了java.io.Closeable接口的对象,都可以当做资源使用。
https://www.cnblogs.com/hihtml5/p/6505317.html
启动的顺序是 先启动 BrokerServer , 通过socket监听 客户端传过来的报文。
public void run(){
try(
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream())
){
while(true){
String str = in.readLine();
if(str == null){
continue;
}
System.out.println("接收到原始数据:" + str);
if(str.equals("CONSUME")){
String message = Broker.consume();
out.print(message);
out.flush();
}else{
Broker.produce(str);
}
}
再启动 生产者,往消息中心的队列 里 加消息:
//生产消息
public static void produce(String message) throws Exception{
Socket socket = new Socket(InetAddress.getLocalHost(),BrokerServer.Service_Port);
try(
PrintWriter out = new PrintWriter(socket.getOutputStream())){
out.println();
out.flush();
}
}
最后 启动消费者,消费 消息中心的队列 里的消息:
public String consume() throws Exception {
Socket socket = new Socket(InetAddress.getLocalHost(),BrokerServer.Service_Port);
try(
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream())
){
out.println("CONSUME");
out.flush();
String message = in.readLine();
return message;
}
}
运行结果 如截图: