面试问题总结
1. 两个软件如何发送消息的?
底层就是通过socket实现的
基于socket实现客户端向服务器:
Socket scoket = new Socket(目标IP或域名,目标端口);//创建连接,如果域名解析不了会抛UnknownHostException的异常 //读取从服务器返回的信息(流) BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); //向服务器写入数据 PrintWriter out = new PrintWriter(socket.getOutputStream(),true); Scanner scan = new Scanner(System.in); String word ; while(scan.hasNext()){ words = scan.nextLine(); output.println(words); System.out.println(words); } in.readLine(); scan.close();
实现服务器向客户端的:
ServerSocket ss = new ServerSocket(端口号); Socket socket = ss.accept();
上述只能实现消息一条一条发送,但是实际情况中经常是多条消息,通常采用连接池的方法维护socket
JMS消息传送机制
用于在两个应用程序之间,或者分布式系统中发送消息消费消息,进行异步通信,数据交互。JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。
消息是一种类型的对象,由两部分组成:报文头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据