• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Saka: Saka JavaWeb 消息发送总线框架 项目地址

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Saka

开源软件地址:

https://gitee.com/taoes/Saka

开源软件介绍:

Saka JavaWeb 事件总线框架

  • Saka是一个简单的基于事件的框架总库,支持一对一发送、一对多发送,以及多对多发送消息机制,目前项目处于1.0版本,正在处于开发中,稍后更详细的使用日志会同步更新。

使用方法

1、添加依赖

请等待上传到仓库

暂未上传,敬请期待

2、使用注解标注对象和执行器

(注意:目前仅支持最多无参接收或者一参接收,暂不支持多个参数接收消息)

  • 使用@SakaSService 既可以将此对象注入至Spring容器

  • 使用@SakaSubscribe即可声明某方法为接收方法

参数名称说明默认值备注
debug是否为调试模式false调试模式在使用中会打印日志
order设置优先级顺序5数字越小,优先级越高,越先被执行

如下定义了三种基本的接收器

/** * 实现一个接收消息 * * <p>使用@SakaService注入到Spring容器 * * <p>使用@SakaSubscribe标注这是一个接收器 * * @author tao */@SakaServicepublic class BaseService {  /** 自动注入对象测试 */  @Autowired SpeakService speakService;  /** 不接受参数 */  @SakaSubscribe  public void sendEmpty() {    speakService.speak();    System.out.println("exec sendEmpty ");  }  /** 接受一个参数 */  @SakaSubscribe  public void sendString(String message) {    speakService.speak();    System.out.println("exec  sendString = " + message);  }    /** 接受一个参数自定义的参数类型 */  @SakaSubscribe  public void sendClassObject(Message message) {    speakService.speak();    System.out.println("exec  sendClassObject = " + message.getName());  }  }

2、注入SakaSendClient

Saka在应用启动的时候向Spring的Context中注入ISakaClient,在SpringBoot项目中可使用以下代码自动的注入Bean对象。

@RestControllerpublic class TestController {  /** 自动注入SakaClient */  @Autowired  SakaSendClient sakaSendClient;}  

3、使用Client发送消息

在需要发送消息的地方,注入SakaClient对象后,使用send()或者send(Object)方法发送消息.

@RestControllerpublic class TestController {  /** 自动注入SakaClient */  @Autowired SakaSendClient sakaSendClient;  /**   * 尝试发送一个字符串消息   *   * @param name   * @return   * @throws Exception   */  @GetMapping("/string/{name}")  public String sendString(@PathVariable("name") String name) throws Exception {    sakaSendClient.send(name);    return name;  }  /**   * 尝试发送自定义类型消息   *   * @param message   * @return   * @throws Exception   */  @GetMapping("/message/{message}")  public String sendMessage(@PathVariable("message") String message) throws Exception {    Message messageObject = new Message().setName(message).setAge(12);    sakaSendClient.send(messageObject);    return messageObject.getName();  }  /**   * 尝试发送空消息   *   * @return   * @throws Exception   */  @GetMapping("/empty")  public String sendEmpty() throws Exception {    sakaSendClient.send();    return "success";  }} 

4、控制台观察消息发送日志

可以使用注解@SakaSubscribe注解参数debug配置是否输入打印日志,默认是不打印日志。

//Saka注册接收器日志                                                     Saka ------> Add a methods execCommand(1) to Saka Saka ------> Add a methods sendClassObject(1) to Saka Saka ------> Add a methods printMessage(0) to Saka Saka ------> Add a methods speak(0) to Saka                                                                                  //Saka发送消息   Saka ------> Send data to testMethodes1 successfully              Saka ------>  Saka has successfully sent 1 times data.            Saka ------>  Saka has successfully sent 1 times data.            Saka ------>  Saka has successfully sent 1 times data.           

开启优先级顺序执行

在通过注解@SakaSubscribe设置Subscribe的同同时,您可以为其设置优先级order,如果不设置默认值为OrderConstance.ORDER_NORMALE(5),数字越小,优先级越高,越先被执行。如下所示

  @SakaSubscribe(debug = true,order = OrderConstance.ORDER_NORMALE)  public void printMessage() {}  /** 接受参数一个参数 */  @SakaSubscribe(debug = true,order = OrderConstance.ORDER_HIGHT)  public void execCommand(String message) {}  /** 接受一个参数自定义的参数类型 */  @SakaSubscribe(order = OrderConstance.ORDER_LOWWER)  public void sendClassObject(Message message) {}

同时,考虑到性能,顺序执行Subscribe是默认关闭状态的,您可以通过application配置文件配置启用此功能

  • properties文件
saka.sequence-execute=true
  • yaml文件
saka:  sequence-execute: true

设置监听器

在一些情况下您可以设置listener来实现Subscribe的执行状况监听,您只需要在Spring容器中注入监听对象即可,此Bean要求继承HandleSubscribeListener接口。

比如:

  @Bean  public HandleSubscribeListener handleSubscribeListener(){    return new HandleSubscribeListener() {      //TODO 返回执行结果      @Override      public void onSuccess(MetaMethod metaMethod, Object resultObject) {        log.info("Subscribe监听器接收到执行了方法 = {} ",metaMethod.getMethod().getName());      }      @Override      public boolean onError(Throwable t) {        log.error("Subscribe监听器接收执行错误的通知,错误信息 = {}",t);        return true;      }    };  }
  • 成功执行一个Subscribe的时候将会执行public void onSuccess(MetaMethod, Object )方法,其中MetaMethod表示当前执行的对象,resultObject表示执行的结果对象
  • 执行Subscribe中出现了异常信息的时候,将执行public boolean onError(Throwable) 您可以返回一个布尔类型的数据表示是否继续执行剩余的Subscribe,其中Throwable表示出现的异常信息

关闭Saka

在使用的过程中,可以通过配置动态的关闭Saka,重新启动应用,可以看到以下提示则说明关闭成功。

Saka ------> Don't open the Saka, please check the configuration information

properties文件配置

saka.enable= false

yaml文件配置

saka:    enable: false

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap