端午闲着无聊,自己撸了一个简单的框架,可以实现在使用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. [Swift]LeetCode155. 最小栈 | Min Stack

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...

  2. [Swift]LeetCode265.粉刷房子 II $ Paint House II

    There are a row of n houses, each house can be painted with one of the k colors. The cost of paintin ...

  3. Metrics.NET step by step

    安装Nuget包 nuget中搜索metrics,如图: 配置Metrics 在程序入口处插入配置Metrics的代码. class Program { static void Main(string ...

  4. C# 8中的可空引用类型

    原文:Nullable Reference Types In C# 8 作者:.NET Core Tutorials 译者:Lamond Lu 现状 可空引用类型? 自从我开始学习.NET, 引用类型 ...

  5. 从零开始学习PYTHON3讲义(二)把Python当做计算器

    <从零开始PYTHON3>第二讲 上一讲我们说过了如何启动Python IDLE集成开发学习环境,macOS/Linux都可以在命令行执行idle3.Windows则从开始菜单中去寻找ID ...

  6. 洛谷:P1182:数列分段`Section II`

    题目描述 对于给定的一个长度为N的正整数数列 A-iA−i ,现要将其分成 M(M≤N)M(M≤N) 段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列 4 2 4 5 1424 ...

  7. 漫画:htts是如何保证一台主机把数据安全发给另一台主机

    通过漫画的形式由浅入深带你读懂htts是如何保证一台主机把数据安全发给另一台主机的 对称加密 一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端.之后服务器给客户端发送真实数 ...

  8. 【SpringCloud】HystrixCommand的threadPoolKey默认值及线程池初始化

    关于threadPoolKey默认值的疑问 使用SpingCloud必然会用到Hystrix做熔断降级,也必然会用到@HystrixCommand注解,@HystrixCommand注解可以配置的除了 ...

  9. 第48章 UserInfo端点(UserInfo Endpoint) - Identity Server 4 中文文档(v1.0.0)

    UserInfo端点可用于检索有关用户的身份信息(请参阅规范). 调用者需要发送代表用户的有效访问令牌.根据授予的范围,UserInfo端点将返回映射的声明(至少需要openid作用域). 示例 GE ...

  10. 【开源】SpringBoot&Netty实现仿微信网页版项目更新

    阅读本文约“2.3分钟” 项目更新啦!V1.3.0 还记得那个聊天室的小项目吗? SpringBoot 加 Netty 实现聊天室 没错,这次已经完整进行了版本的替换,酥酥聊天室! 基于原项目的改动, ...