首页 > 其他分享 >webflux 实现发布订阅

webflux 实现发布订阅

时间:2023-10-25 12:55:20浏览次数:22  
标签:订阅 subscribe webflux Flux 发布 session sink public result

模拟数据源,每5秒产生一个数据

 private void createData(FluxSink<String> sink){
        Flux.interval(Duration.ofSeconds(5)).map(i-> "Flux data---"+ i)
                .doOnNext(sink::next)
                .subscribe();
    }

创建两个全局变量,一个用来保存数据,一个用来获取数据

  Flux<String> source;
  Flux<String> result;

把产生的数据保存的全局变量中

    public OrderMessageHandler() {
       addData().subscribe();
    }

    public Flux<Void> addData(){
        System.out.println("添加数据");
        result = Flux.push(this::createData);
        source = Flux.push(this::generateData);
        return Flux.empty();
    }

    private void generateData(FluxSink<String> sink){
        result.doOnNext(sink::next)
                .takeWhile(str -> !sink.isCancelled())
                .subscribe();
    }

发送到前端

    public Mono<Void> handle(WebSocketSession session) {
        session.receive().subscribe(System.out::println);
            System.out.println("websocket");
        return session.send(initData(session));
    }

    public Flux<WebSocketMessage> initData(WebSocketSession session ){
          return source.map(session::textMessage);

    }


来自为知笔记(Wiz)

标签:订阅,subscribe,webflux,Flux,发布,session,sink,public,result
From: https://www.cnblogs.com/baiyifengyun/p/17786906.html

相关文章

  • 界面控件开发包DevExpress v23.1.6全新发布|附高速下载
    DevExpressUniversal拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具......
  • Runner GoUI自动化测试发布
    构建自动化测试体系是当下每个项目团队愿意去做的,自动化测试减少重复操作节省人力成本。RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高度可......
  • Runner GoUI自动化测试发布
    构建自动化测试体系是当下每个项目团队愿意去做的,自动化测试减少重复操作节省人力成本。RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高......
  • jenkins实践篇(1)——基于分支的自动发布
    问题背景想起初来公司时,我们还是在发布机上直接执行发布脚本来运行和部署服务,并且正式环境和测试环境的脚本都在一起,直接手动操作脚本时存在比较大的风险就是将环境部署错误,并且当时脚本部署逻辑还没有检测机制,服务部署起来后,还必须登录到对应机器查看服务是否正确启动,整个部署过......
  • 发布 ASP.NET Core WebAPI 至 IIS
    一、在VS上1.在VS项目上右键,选择发布:2.根据服务器情况,选择目标运行时;将开发时使用的框架作为目标框架;目标位置上已有的文件是否删除,通过删除现有文件进行配置指定。点击发布之后,将在目标位置成生相应的文件。VS上也有相应的输出 二、在目标服务器上 1.复制发布......
  • KubeEdge v1.15.0发布!新增5大特性
    本文分享自华为云社区《KubeEdgev1.15.0发布!新增Windows边缘节点支持,基于物模型的设备管理,DMI数据面支持等功能》,作者:云容器大未来。北京时间2023年10月13日,KubeEdge发布v1.15.0版本。新版本新增多个增强功能,在边缘节点管理、边缘应用管理、边缘设备管理等方面均有大幅提......
  • 百度Comate SaaS版本正式发布,助力开发者加速研发过程
    百度Comate是基于文心大模型的智能代码助手,让开发者的编码更快、更好、更简单,为开发者自动生成完整的、且更符合实际研发场景的代码行或整个代码块,帮助每一位开发者轻松完成研发任务。10月17日召开的百度世界大会上,百度CTO王海峰博士介绍了百度Comate在百度内部的使用效果,整体采纳......
  • 分布式定时任务-利用分布式定时任务框架xxl-job实现任务动态发布
     1.场景:项目前期使用k8s部署的单节点,后期生产需要将单节点的服务扩展多个节点,每个节点的定时任务使用的quartz实现,如果不加限制且定时任务有对数据库的写操作,在不同节点上执行的定时任务容易造成数据库产生脏数据,所以需要分布式任务框架对任务进行控制,这里我们使用xxl-job实现。......
  • 微软今天发布了.NET 8 的首个预览版,正式版预估今年 11 月发布
    IT之家2月22日消息,微软今天发布了.NET8的首个预览版,适用于Windows、macOS和Linux的版本已经开发下载。微软计划未来每月发布新的预览版和候选版本,正式版预估将于今年11月在.NETConf2023上发布。 IT之家附.NET8的首个预览版的主要更新内容:NativeAhead-of-Time(AO......
  • geoserver发布wms服务的tif影像黑色的背景如何去除
    在GeoServer发布的TIFF影像中,白色(或黑色)的背景通常表示影像中的透明部分。要去除白色背景,可以把将白色部分变为透明。这通常需要以下步骤:方法一图层设置打开编辑图层界面——数据覆盖参数在InputTransparentColor填入需要覆盖的颜色比如我想把给色变为透明,......