java如何实现类似MFC中的消息映射机制

Python029

java如何实现类似MFC中的消息映射机制,第1张

仅供参考:

机制不同的。

1、问: 什么是 Java 消息服务?

答: Java 消息服务(Java Message Service,JMS) API 是一个用于访问企业消息传递系统的 API。是 Java 2 Platform, Enterprise(J2EE)的一部分。

2、目前流行的消息传送产品有哪些?

答:目前流行的有ActiveMQ、IBM WebSphere MQ、SonicMQ等

3、什么时候可以用到java消息机制?

答:(1)异构系统集成,整合现有资源,提高资源的利用率

(2)异步请求处理,减轻或消除系统瓶颈,提高用户生产率和系统的整体可伸缩性

(3)组件解偶,增加系统的灵活性

4、消息传送的两种模型

发布/订阅模型

客户端发送消息到一个名为主题(topic)的虚拟通道中,每个订阅该主题的消费者都会接收到每条消息的一个副本。

点对点模型

客户端通过队列(queue)这个虚拟通道来同步和异步发送、接收消息,发送到队列的消息只能被一个接收者所接收,即使有多个消费者时也只能有一个消费者处理消息

我们知道在开发中,springboot需要在自己本身的相关组件都启动和准备完毕后才可以正式处理请求。同样,在实例进行关闭时,实例中正在执行的任务,如果有必要最好是能主动的去做一些关闭操作,来避免出现未知的影响或者数据污染的情况。比如对自己定义的线程池做主动关闭,释放一些资源的连接,等待已在执行中的任务完成等。

为了实现以上场景下的需求,这里就用到了SpringBoot或者说Spring的消息通知功能,重点是继承自 ApplicationEvent (Spring-context)的 SpringApplicationEvent (SpringBoot),而 ApplicationEvent 继承来自 EventObject (jdk),这里 SpringApplicationEvent 的source是 ApplicationContext 。

看名知义,该类型是在实例关闭的时候触发,在启动的时候会注册 shutdownHook ,当实例关闭的时候, shutdownHook 触发 org.springframework.context.support.AbstractApplicationContext.doClose() 关闭动作,在这个方法里执行

该事件是在启动过程中触发,在启动主要方法 org.springframework.boot.SpringApplication.run(java.lang.String...) 执行到最后,如下:

运行各个 SpringApplicationRunListener , 其中有一个是 org.springframework.boot.context.event.EventPublishingRunListener ,然后开启如下的调用,在这里会创建并发送 ApplicationReadyEvent 事件,表示Springboot上下文初始化完成。

主要介绍下第二部分关闭,都是通过spring依赖注入引入自定义的执行方法和线程池,因为这里线程池都是注册成 bean 的,可以放在一起统一管理。就不用每个地方去关闭;还有一个是部分功能 bean 实现了 Stopable 接口,用来完成扩展的关闭方式,可以理解成一个规范。

以上就是这篇的全部内容,感谢阅读。