当前位置: 首页 > news >正文

江苏省建设人才网站安徽茶叶学会 网站建设

江苏省建设人才网站,安徽茶叶学会 网站建设,韶关网站建设价格,wordpress 关键词排名DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传…

DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。

特点

结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。

  • 支持事务传导(同步分发、异常透传)
  • 支持事件标识、拦截器(方便跟踪)
  • 支持监听者排序、附件传递(多监听时,可相互合作)
  • 支持 Bus 和 Api 两种体验风格

与常见的 EventBus、ApiBean 的区别

DamiBusEventBusApiDamiBus 的情况说明
广播发送(send) + 监听(listen)
以及 Api 模式
应答发送并请求(sendAndRequest) + 监听(listen) + 答复(reply)
以及 Api 模式
回调有+有-发送并订阅(sendAndSubscribe) + 监听(listen) + 答复(reply)
耦合弱-弱+强++

如果涉及类加载器隔离:请在主程序标为编译,在其它模块标为可选。

本次更新了什么?

  • 删除 Dami::intercept 接口,直接使用 Dami.bus()::intercept
  • 更名 sendAndResponse 为 sendAndRequest!!!
  • 更名 sendAndCallback 为 sendAndSubscribe!!!
  • 添加 TopicDispatcher,将调度处理与路由器开发(更方便添加监控)
  • 添加 InterceptorChain::getTargets 接口(可以知道有哪些订阅)
  • 添加 Acceptor::isSingle 接口,用于识别单发还是多发接收
  • 添加 Payload::isSubscribe 接口,用于识别订阅
  • 调整 启用新的配置方式(配置路由时,不需要重新实例化总线)
  • 调整 接口默认方法处理策略(有订阅执行订阅,无订阅者执行默认)
  • 调整 createSender 调整类加载器的主体
  • 调整 send,sendAndSubscribe 返回类型改为 bool(马上可以知道是否有订阅目标)

新增加的监视效果,基于拦截器:

public class Demo16_intercept {@Testpublic void main() throws Exception {Dami.bus().intercept((payload, chain) -> {System.out.println("开始监视...");if (chain.getTargets().size() == 0) {System.out.println("没有订阅...");} else {chain.getTargets().forEach(e -> System.out.println(e.getListener()));chain.doIntercept(payload);}System.out.println("结速监视...");});//发送事件Dami.bus().send("demo.hello", "world");}
}

另一个方案是用重载派发器的方法:

public class Demo16_dispatcher {@Testpublic void main() throws Exception {DamiConfig.configure(new TopicDispatcherMonitor());Dami.bus().send("demo.hello", "world");}
}public class TopicDispatcherMonitor<C,R> extends TopicDispatcherDefault<C,R> {@Overrideprotected void doDispatch(Payload<C, R> payload, List<TopicListenerHolder<C, R>> targets) throws Throwable {//开始监视...System.out.println("开始监视...");//用 i,可以避免遍历时添加监听的异常for (int i = 0; i < targets.size(); i++) {TopicListener<Payload<C,R>> listener = targets.get(i).getListener();//发送前监视...System.out.println("发送前监视...");listener.onEvent(payload);//发送后监视...System.out.println("发送后监视...");}//结速监视...System.out.println("结速监视...");}
}

疑问:
为什么不用分布式消息队列呢?不好意思,真的是不同的维度事儿。

项目地址

  • https://gitee.com/noear/dami
  • https://github.com/noear/dami
http://www.yayakq.cn/news/625186/

相关文章:

  • 网站后台添加内容网页不显示企业咨询方案
  • 做企业展示型网站的好处深圳大森设计
  • 做彩票网站合法吗健身器材网站源码
  • 如何查看网站架构做网站北京
  • 自助建站网站的宣传手册wordpress桌面应用程序
  • 开发网站类型wordpress收集访问量
  • 手机商城网站潍坊建设gc局网站
  • 天津建设银行网站网站安全管理
  • 海南网站建设哪家不错电子商务网站建设与实践考试
  • 深圳制作网站专业杭州手机网站开发
  • 企业网站官网模板地方门户网站如何盈利
  • 设计公司职位莱芜网站优化是什么
  • 个人网站免费域名获取查询关键词排名软件
  • 阿里云服务器可以做多少个网站适合seo的wordpress模板
  • 网络公司做机场网站怎么分析网站设计
  • 德清网站制作网站数据库配置
  • 部队网站源码wordpress音乐站主题
  • 个人网站和企业网站软件开发公司深圳
  • 网站设计的趋势wordpress 旅游预订
  • 网络运维和网站开发行业网站做不下去
  • 被攻击网站简单网站制作软件
  • 贺州网站推广做暧视频网站
  • 什么网站可以自己接工程做预算阿里云账号密码发给网站开发
  • 山西省建设工程招投标监督网站长沙人才市场招聘网最新招聘
  • 莆田 做网站的公司怎样做网站吸引客户
  • 深圳集团网站开发网站开发公司wordpress 同义词
  • 赣州做网站jx25图灵机器人+wordpress
  • wordpress网站地图生成wordpress 用户验证失败
  • 西部虚拟主机网站后台不能访问东圃手机网站开发
  • 网站的版式设计有哪些wordpress新建页面有什么作用