NM3000消息推送框架简介

NM3000网管系统架构之一:消息推送框架简介

1、简介

传统的顺序程序设计总是按照流程来安排所有的工作,而事件机制的特点在于:等待,有事情发生则处理。这样的好处是避免了顺序程序设计在没有工作时的空循环处理,释放了各种资源。

Java事件处理采用观察者模式,即发布-订阅模式。关于该设计模式,请参照观察者模式

2、NM3000事件机制相关接口、类介绍

2.1 监听者接口:主题和监听者之间消息传递的标准接口规范。

EmsListener

2.2 监听者:实现监听者接口,具体的事件执行者。

2.3 *Adapter类:适配器类,继承该类后无需实现接口中所有方法,如果需要实现方法不多,可以无需建立适配器类。

2.4 主题接口:被监听者的顶层接口.

2.5 主题:被监听者,包含监听者接口的引用,一个事件队列,两个消息发送方法。

messageService

  • regs:监听者接口引用map集合

    map的key是监听者接口的class对象,value是该接口下的实现类对象。

  • eventQueue:消息对象队列

    阻塞队列中存放的是EmsEventObject对象,所以继承自该对象的消息对象都可以存放到队列中。

  • executorService:java线程池

    采用生产者-消费者模式,多线程处理消息队列。

  • addListener:监听者类初始化时,调用该方法,将自己添加到messageService的监听者集合中。

  • addMessage:添加消息,将消息放到eventQueue中,等待执行
  • fireMessage:立即将消息传递给对应的监听者,即立即执行

    sendMessage

    重点:封装消息对象,设置监听该消息的接口和响应方法。

    fireMessage

    使用反射,从消息对象中获得响应方法,invoke执行,即将消息传递给指定接口的监听者。

2.6 消息对象:主题和监听者之间传递的事件描述对象。

EmsEventObject

3、NM3000事件机制的使用

  1. 新建*Listener接口,继承EmsListener
  2. 新建Adapter类,继承EmsAdapter,实现Listener接口。(可选)
  3. 新建Event类,继承EmsEventObject<Listener>类

一般在service层使用消息。

  1. 在监听者实现类(实现监听者接口)中注MessageServiceImpl类,并在initialize方法中添加Listener接口。在destroy方法中移除Listener接口。
    注意:在配置*serviceImpl实现类时,需要配置初始化及销毁时方法。示例:
    messageService.addListener(CmcEntityListener.class, this);
    messageService.removeListener(CmcEntityListener.class, this);
  2. 在需要发送消息的地方,构建消息对象,设置监听接口及方法,调用messageService发送消息。
    addMessage:将消息添加到消息缓冲队列,延迟执行
    fireMessage:立即执行

    此处输入图片的描述

坚持原创技术分享,您的支持将鼓励我继续创作!
0%