设计一个简单的消息队列

代码地址是 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;
            }
        }

 

运行结果 如截图:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值