端午闲着无聊,自己撸了一个简单的框架,可以实现在使用SendClient发送消息,在Spring容器中,符合该消息机制的接收器将能够被执行,目前Saka处于0.0.1版本【Saka-GIthub地址(欢迎Star ★)】还有很多问题,但是基本可以实现以下的功能.

  • 自动扫描,无需配置繁琐接收器
  • application 配置日志以及总开关
  • sencClient客户端注入容器,使用Autowired即可注入使用

后期将计划支持

  • 支持异步发送消息
  • 添加支持发送优先级
  • 接收相关详细配置

使用方法

添加依赖

暂未上传,敬请期待

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

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

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

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

参数名称 说明 默认值 备注
debug 是否为调试模式 false 调试模式在使用中会打印日志

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

/**
* 实现一个接收消息
*
* <p>使用@SakaService注入到Spring容器
*
* <p>使用@SakaSubscribe标注这是一个接收器
*
* @author tao
*/
@SakaService
public 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());
}
}

注入SakaSendClient

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

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

使用Client发送消息

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

@RestController
public 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";
}
}

控制台观察消息发送日志

可以使用注解@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.

关闭Saka

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

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

properties文件配置

saka.enable= false

yaml文件配置

saka:
enable: false

JavaWeb 消息总线框架 Saka V0.0.1 发布的更多相关文章

  1. (转发)一个通用的C++ 消息总线框架

    注:转自https://www.cnblogs.com/qicosmos/archive/2013/04/28/3048919.html 应用开发过程中经常会处理对象间通信的问题,一般都是对象或接口的 ...

  2. Hasor-Core v0.0.4 & Web v0.0.3 发布

    “Hasor是一款开源的 Java 应用开发框架.它是围绕 Guice 为核心创建的一系列模块组合而成.使用Hasor 会加快软件软件开发效率并降低开发成本.目前 Hasor包含了 Hasor-Cor ...

  3. 轻量级模块化开发框架 Hasor 核心模块 v0.0.2 发布

    首先引用Wiki的介绍一下Hasor:     “Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Hasor遵循简单的依赖.单一职责,在开发多模块企业项目中更加有调理.然 而Ha ...

  4. [译]ABP框架v2.3.0已经发布!

    在新冠病毒的日子里,我们发布了ABP框架v2.3, 这篇文章将说明本次发布新增内容和过去的两周我们做了什么. 关于新冠病毒和我们的团队 关于冠状病毒的状况我们很难过.在Volosoft的团队,我们有不 ...

  5. 鸿蒙开发板外设控制 之 实现按键“按下事件”和“释放事件”的通用框架(V0.0.1)

    在帖子 <鸿蒙开发板外设控制>直播图文版(2020.10.28) 中我们提到过:"开发板上的按键也可以看作一种 GPIO 外设." 因此,要捕捉按键的状态(按下或释放) ...

  6. 鸿蒙开发板外设控制 之 实现物理按键的“长按事件”(按键通用框架 V0.0.2)

    我在之前的帖子<实现按键"按下事件"和"释放事件"的通用框架(V0.0.1)>中阐述了DTButton-V0.0.1的设计思路,并且也在帖子中开源了 ...

  7. Android消息总线的演进之路:用LiveDataBus替代RxBus、EventBus

    背景 对于Android系统来说,消息传递是最基本的组件,每一个App内的不同页面,不同组件都在进行消息传递.消息传递既可以用于Android四大组件之间的通信,也可用于异步线程和主线程之间的通信.对 ...

  8. SpringCloud Bus消息总线

    在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例,它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线. SpringCloud中也有对应的解决方案 ...

  9. JHipster技术栈定制 - JHipster Registry消息总线配置

    本文说明了如何定制化JHipster-Registry,增加消息总线功能. 实现的效果就是修改配置中心的文件后,通过消息队列主动推送给微服务而无需重启微服务,实现配置内容热加载. 1 整体规划 1.1 ...

随机推荐

  1. SUSE12Sp3-.NET Core 2.2.1 runtime安装

    1.安装libicu依赖 1.在线安装 sudo mkdir /usr/local/dotnet #创建目录 cd /usr/local/dotnet sudo wget https://downlo ...

  2. 配置Zookeeper、Dubbox

    CentOS的配置: 1.给CentOS安装Zookeeper: 网络配置成仅主机 上传tar.gz:比如用FTP tar -xvzf ... cd zookeeper mkdir data cd c ...

  3. [Swift]LeetCode383. 赎金信 | Ransom Note

    Given an arbitrary ransom note string and another string containing letters from all the magazines, ...

  4. [Swift]LeetCode994. 腐烂的橘子 | Rotting Oranges

    In a given grid, each cell can have one of three values: the value 0 representing an empty cell; the ...

  5. mogodb分片配置

    下图展示了在MongoDB中使用分片集群结构分布: 上图中主要有如下所述三个主要组件: Shard: 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个repli ...

  6. github pages绑定域名

    网上很多人问 github 绑定域名要不要备案,很多人的回答是: 国内主机需要备案,国外主机不用 这个说法是没错的,但是却没有直接回答出 github pages 是否需要备案! 首先声明 githu ...

  7. 火狐l浏览器所有版本

    最近在群里看到好多人需要火狐浏览器的低版本,而且都是跪求,更有甚者是高额悬赏,因此给大家一个链接,免费的,免费的,免费的!!!重要的事说三遍,拿走不谢~~ 火狐所有版本,了解一下,有需要的自行下载. ...

  8. 【JVM虚拟机】(2)---GC 算法与种类

    GC 算法与种类 对于垃圾收集(GC), 我们需要考虑三件事情:哪些内存需要回收?如何判断是垃圾对象?垃圾回收算法有哪些? 一.GC的工作区域 1.不是GC的工作区域 (1)程序计数器.虚拟机栈和本地 ...

  9. Kibana(一张图片胜过千万行日志)

    Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作. 你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互. 你可以轻松地执行高级 ...

  10. [Leetcode]100. Same Tree -David_Lin

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...