首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏以Java架构赢天下

    设计模式之发布订阅模式(2) Redis 发布订阅模式

    Redis 发布/订阅命令 Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了发布订阅模式。该功能提供两种信息机制, 分别是“发布订阅到频道”和“发布订阅到模式”。 下面我们就演示一下 PUBLISH命令和SUBSCRIBE命令的用法: 首先是订阅单个频道: ? 然后是订阅多个频道: ? PSUBSCRIBE 模式订阅命令 ? Redis发布/订阅存储结构如下图所示: ? Spring Data Redis 实现发布/订阅模式 下面带你一步步通过 Spring Data Redis 来实现发布与订阅。 然后我们定义了两个“subscriber”,“subscriber1”订阅了“topic1”和“topic2”,“subscriber2”只订阅了“topic2”。 :Topic2 Message : 6967291d-aad4-4aa3-b44a-b988a9589700] 总结 本文从 Redis 发布和订阅相关的命令开始,逐步讲解了 Redis 发布订阅的存储结构

    1.9K31发布于 2019-06-06
  • 来自专栏悠扬前奏的博客

    Redis-2.发布与订阅

    基础 发布与订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。 订阅者(listener)订阅频道(channel);发送者(publisher)向频道发送二进制字符串消息(binary string message)。 2.命令 Redis中发布于订阅的命令 命令 描述 SUBSCRIBE SUBSCRIBE channel [channel ...] :订阅给定的一个或者多个频道 UNSUBSCRIBE UNSUBSCRIBE [channel [channel ...]] :订阅与给定模式相匹配的所有频道 PUNSUBSCRIBE PUNSUBSCRIBE [pattern [pattern ...]]:退订给定的模式,如果没有指定模式,则退订所有模式

    61130发布于 2019-06-13
  • 来自专栏腾讯云智能顾问

    【云顾问-云巡检】订阅功能更新,支持基于架构图纬度订阅报告

    在【报告订阅】模块中,新建报告模版时选择【架构评估报告】,【架构名称】中可以检索到支持订阅的架构图,点击新建后将会保存该报告模板,即可在【订阅列表】中选择订阅该架构图报告FAQ为什么在【架构名称】中找不到我的架构图 必须是有已绑定资源的架构图才能支持订阅架构评估报告,若无法找到架构图可在【云架构】中进行资源绑定为什么我新建模板后并没有收到报告订阅报告共分成两步:第一步在【报告模板】中新建模板,可以选择报告类型,如【云巡检报告】和【架构评估报告】第二步在【订阅列表】中订阅模板,可以自定义以什么频次在什么时间发送所选的报告模板到哪些邮箱

    31120编辑于 2024-07-22
  • 来自专栏机器人课程与技术

    ROS2与Arduino发布订阅

    一个订阅发布代码如下: #include <ros2arduino.h> #define XRCEDDS_PORT Serial #define PUBLISH_FREQUENCY 1 //hz 主题 Arduino发布消息到主题ros2_chatter,并订阅主题ros2_led。 使用如下命令控制LED灯: 点亮:ros2 topic pub /ros2_led std_msgs/msg/Bool "{data: 1}" 关闭:ros2 topic pub /ros2_led std_msgs ros2cartographer参考:https://github.com/ros2/cartographer。 下面详细介绍一下如何使用ros2arduino: 必须安装ROS2,必须安装Micro-XRCE-DDS。 ROS2安装可以参考: 1.

    2.5K61发布于 2019-09-27
  • 来自专栏青蛙要fly的专栏

    Android技能树 — Rxjava取消订阅小结(2):RxLifeCycle

    (1):自带方式 Android技能树 — Rxjava取消订阅小结(2):RxLifeCycle 现在很多项目都在使用Rxjava了,对于RxJava的使用,估计都很熟悉了,但是很多人在使用RxJava 和RxLifeCycle关系不大,但是可以当了解,不想看的可以跳过 1. 2 基础知识。 getObservable(){ return ((Observable) subject); } //比如你调用play方法,按照要求只能发送1,2, ((BehaviorSubject) getObservable()).onNext(99999); 复制代码 而在Rxjava 2 中只是把这个asObservable 方法改成了 hide方法而已。 2 RxLife源码解析 我们已Activity中取消订阅为例: RxActivity.java(代码说明具体查看源码里面的备注): public abstract class RxActivity extends

    2.7K30发布于 2018-08-29
  • 来自专栏迁移内容

    RabbitMQ:订阅模型-消息订阅模式

    ---- 文章目录 一、RabbitMQ 订阅模型-消息订阅(Fanout)模式 1、RabbitMQ 消息订阅(Fanout)模式 2、消息订阅(Fanout)模式组成 3、消息订阅(Fanout)模式流程 二、RabbitMQ 订阅模型-消息订阅(Fanout)模式实现 1、添加 Maven 依赖 2、封装工具类 ConnectionUtil 3、生产者实现 4、消费者-1 实现 5、消费者-2 实现 6、消费者-3 实现 三、订阅模型 三种模式区别 1、RabbitMQ 消息订阅(Fanout)模式 2、RabbitMQ 路由(direct)模式 3、RabbitMQ 主题(topic)模式 --- 2、消息订阅(Fanout)模式组成 RabbitMQ 订阅模型-消息订阅(Fanout)模式主要有以下五个角色构成: 生产者(producer/ publisher):一个发送消息的用户应用程序。 -消息订阅(Fanout)模式 消费者 * @date 2022-12-26 11:45 上午 **/ public class Customer2 { public static void

    2.2K10编辑于 2022-12-28
  • 来自专栏分享干货的你

    Springboot2使用redis 进行消息的订阅发布

    我们都知道redis 也有发布订阅模式, 但是使用的比较少。 并且redis的发布订阅不会持久化落入磁盘。总的来说就是不可靠。 但是在一些场景我们还是会用到的。 这里我们就来springboot 整合一下redis 进行发布订阅2, 注册完监听器之后,在监听自己的适配器,里面监听自己自定义的方法 也可以实现MessageListener, 不需要指定方法。 里面也能获取到topic的名字。 2" ,咱们设置的topic 和发送的topic "test.12" 说明模糊匹配是可以的, 再试一下全量匹配。 把 "test.?2" 变成 test.* 发布的时候置顶两个。 ? ? 好了,今天的springboot整合redis 消息的发布订阅就完成了。 这里有一个问题,就是新加入的订阅者不会消费之后的数据,也不支持动态的添加topicName , 就是发布者。

    1.9K10发布于 2021-04-23
  • 来自专栏设计模式

    RxJava2.X 源码分析(三):订阅线程切换

    本次我们将探索RxJava2.x线程切换的实现原理。做到知其然,知其所以然。 Ok,开始我们的探索之旅吧! 从Demo到源码 本次我们将在上次的demo基础了做点改动。 ? ? 版本2:切换线程(切换操作是如此的潇洒) ? 输出结果: ? 存在版本切换的版本: 1、被观察者的onSubscribe在调用subscribe的线程中执行 2、被观察者的subscribe在RxJava2的RxCachedThreadScheduler-1中运行 所以run里面的source.subscribe(parent);即为wrapper的observer订阅了上游的observable,触发了上游observable的subscribeActual,开始执行数据的分发 装饰者模式的使用贯穿了RxJava2的各处(个人理解),再次体会了设计模式的魅力。 由于本篇过长,observeOn订阅者线程的切换就再分一篇吧。

    78040发布于 2020-12-15
  • 来自专栏Vue2

    vue2知识点:消息订阅与发布

    @toc3.23消息订阅与发布3.23.1知识点总结问题:“全局事件总线”和“消息订阅与发布”都可以实现任意组件间通信,那用哪个好? “全局事件总线”不同,取消订阅指定订阅返回的id,且每次返回的id都不同,而“全局事件总线”指定的是“自定义事件名称”注意点4:订阅回调配置一定要使用箭头函数或者外部定义方法 /font>消息订阅会接收到2个参数,第1个参数为消息名称,第2个参数才是传递过来的值,如写法1,但是实际msgName参数1他跟用不到它,所以可使用下划线“_”占个位,如写法2写法1:this.pubId .vue2知识点:动态组件17.vue2知识点:混入18.vue2知识点:浏览器本地缓存19.vue2知识点:全局事件总线(GlobalEventBus)20.vue2知识点:消息订阅与发布21.vue2 :把案例Todo-list改成使用消息订阅与发布32.vue2基础组件通信案例练习:把案例Todo-list新增编辑按钮33.vue2基础组件通信案例练习:把案例Todo-list改成使用动画与过度34

    33400编辑于 2024-10-26
  • 来自专栏用户7614879的专栏

    Springboot2 整合redis发布订阅 解决订阅多个频道重复代码过多 创建很多bean问题

    SEPARATOR = ","; private static final String HOST_PORT_SEPARATOR = ":"; /** * redis 发布订阅配置 ; }); log.info("subscribe end"); return container; } /** * 初始化订阅频道及处理方法适配器映射

    2.1K30发布于 2020-10-10
  • 来自专栏Coxhuang

    ROS2 C++ Subscriber Publisher 订阅发布例子

    文章目录 ROS2 Subscriber Publisher 例子 ROS2 Subscriber Publisher 例子 运行环境 Ubuntu 20.04 ROS Foxy sub #include << msg->data.c_str() << std::endl; } int main(int argc, char **argv) { std::cout << "Hello, ROS2 #include <std_msgs/msg/string.hpp> int main(int argc, char **argv) { std::cout << "Hello, ROS2 rclcpp::shutdown(); return 0; } CMakeLists.txt cmake_minimum_required(VERSION 3.5.1) project(ros2_

    1.4K60编辑于 2022-05-09
  • 来自专栏腾讯云智能顾问

    【云顾问-数字资产】报告订阅功能更新,支持自定义邮件标题

    功能介绍 在【报告订阅】模块中,新建/编辑订阅时可以通过【邮件标题】栏,修改订阅到您邮箱的邮件名称,方便区分多份报告 在选择【报告模板】后,会提供默认邮件标题,默认格式为:所选报告模板类型-子账户ID 自定义后的邮件名称如下图所示 ❓FAQ 修改邮件标题后,会影响报告内容和功能吗? 不会,自定义邮件标题仅改变报告邮件的标题显示,不会对报告本身的内容和功能产生任何影响。 是否可以针对不同报告设置不同的邮件标题? 可以,您可以根据不同报告类型为其设置不同的自定义标题,以便更好地区分和管理。 自定义邮件标题的长度是否受限?

    34020编辑于 2024-08-09
  • 来自专栏C++小白

    Redis使用及源码剖析-15.Redis发布订阅-2021-2-2

    文章目录 前言 一、发布订阅命令简介 二、频道的订阅和退订 1.频道订阅 2.频道退订 2.频道退订 四、发布消息 五、Redis源码 总结 前言 本文对Redis的发布订阅功能的实现做了简单介绍,包括发布订阅命令和内部实现 一个pubsub_channels 词典的示意图如下: 2.频道退订 UNSUBSCRIBE 命令的行为和 SUBSCRIBE 命令的行为正好相反,当一个客户端退订某个或某些频道的时候, 服务器将从 2.频道退订 当有客户端退订某个模式时,服务端就会遍历pubsub_patterns链表,找到模式和客户端均匹配的pubsubPattern对象,将它从链表中移除。 // 'channel-a' : [c1, c2, c3], // 'channel-b' : [c5, c2, c1], // 'channel-c ' : [c10, c2, c1] // } /* Add the client to the channel -> list of clients hash table

    76330编辑于 2022-02-22
  • 来自专栏韩曙亮的移动开发专栏

    【EventBus】EventBus 源码解析 ( 注册订阅者 | 订阅方法 | 查找订阅方法 )

    文章目录 一、EventBus 注册订阅者 二、订阅方法 三、查找订阅方法 findSubscriberMethods 方法 四、查找订阅方法 findUsingInfo 方法 五、查找订阅方法 findUsingReflectionInSingleClass 一、EventBus 注册订阅者 ---- EventBus 中调用 EventBus.getDefault().register(this) 注册订阅者 ; 该方法中主要进行了如下 2 个步骤 : ① 获取 订阅者 集合 , 查找当前订阅类中符合条件的订阅方法集合 ; ② 遍历 订阅者 集合 , 进行事件订阅 , 保存数据 , 这些数据就是一些映射关系 /** * EventBus是Java (subscriberClass); // 2. findSubscriberMethods 方法 ---- 订阅方法缓存机制 : 从缓存中获取 订阅方法 , METHOD_CACHE 缓存是一个 HashMap 集合 ; 如果订阅者有很多方法 ,

    2.9K20编辑于 2023-03-29
  • 来自专栏科控自动化

    通配符订阅

    附录 A - 主题通配符 订阅可能包含特殊字符,允许您一次订阅多个主题。 主题级别分隔符用于将结构引入主题,因此可以为此目的在主题中指定。 多级通配符和单级通配符可用于订阅,但消息发布者不能在主题中使用。 主题级别分隔符 正斜杠 (/) 用于分隔主题树中的每个级别,并为主题空间提供分层结构。 当在订阅者指定的主题中遇到两个通配符时,使用主题级别分隔符非常重要。 多级通配符 数字符号 (#) 是与主题中任意数量的级别匹配的通配符。 例如,如果您订阅了 finance/stock/ibm/#,则会收到有关以下主题的消息: finance/stock/ibm finance/stock/ibm/closingprice

    3.6K10编辑于 2022-03-29
  • 来自专栏玖叁叁

    Redis订阅模式的高级功能-模式订阅

    模式订阅模式订阅功能允许客户端订阅一类频道,而不是单个频道。模式订阅使用通配符来匹配多个频道,如下所示:PSUBSCRIBE pattern [pattern ...] :取消订阅一个或多个符合给定模式的频道下面是一个模式订阅的示例:import redisimport threading# 创建Redis连接r = redis.Redis(host='localhost if __name__ == '__main__': t1 = threading.Thread(target=publish_message) t2 = threading.Thread( target=subscribe_channel) t1.start() t2.start()在上面的示例中,我们使用p.psubscribe('my_*')方法订阅所有以my_开头的频道。 频道模式的退订Redis提供了两种退订模式订阅的方法,分别是退订当前模式下的所有频道和退订当前模式下的指定频道。

    1.1K20编辑于 2023-04-15
  • 来自专栏玖叁叁

    Redis订阅模式的高级功能-同步订阅

    同步订阅在Redis中,订阅频道时,客户端会一直阻塞等待消息到来。如果频道中没有消息到来,客户端将一直阻塞。这种订阅方式称为同步订阅。 =6379, db=0)r2 = redis.Redis(host='localhost', port=6379, db=0)# 发布消息的方法def publish_message(): while def subscribe_channel(): p = r2.pubsub() p.subscribe('my_channel') while True: message if __name__ == '__main__': t1 = threading.Thread(target=publish_message) t2 = threading.Thread( target=subscribe_channel) t1.start() t2.start()在上面的示例中,我们使用p.get_message(timeout=1)方法等待订阅频道中的消息

    1.1K20编辑于 2023-04-15
  • 来自专栏『Ts + React』项目实战

    『Dva』订阅

    查看文章一、前言本篇文章是『从零玩转 TypeScript + React 项目实战』系列文章的第 6 篇,主要介绍『Dva』中的订阅经过上一篇『Dva』异步处理,文章的介绍,了解了下 Model 当中的 还可以再 Model 中的 Effect 当中做一些异步操作,那么了解了这些内容之后,本篇要介绍一下 Model 当中剩余的部分,也就是订阅。 二、Model 中的订阅在 Model 当中是不是还剩下一个 Subscription:2.1 什么是 SubscriptionSubscription 是什么东西呢? 它呢是专门用来做订阅的,做订阅它能做什么订阅呢,这个时候去官方文档中看一下。 2.如何使用 Subscription:通过监听路由变化的示例,学习了如何使用 history.listen 方法监听路由地址变化,并在变化时执行相应的业务逻辑(如更新页面标题或派发任务)。

    58310编辑于 2024-12-01
  • 来自专栏韩曙亮的移动开发专栏

    【EventBus】事件通信框架 ( 订阅方法注册 | 检查订阅方法缓存 | 反射获取订阅类中的订阅方法 )

    文章目录 一、检查订阅方法缓存 二、反射获取订阅类中的订阅方法 三、完整代码示例 一、检查订阅方法缓存 ---- 注册订阅者时 , 只传入一个订阅者类对象 , 其它信息都需要通过反射获取 ; 1. 获取订阅者类 : 通过反射获取该订阅者类中的所有订阅方法 , 凡是订阅方法 , 都带有 @MySubscribe 注解 ; // 获取订阅者所属类 Class<? > clazz = subscriber.getClass(); 2. 查看方法缓存 : 查看方法缓存中 , 是否有该订阅者对应的 订阅类 和 订阅方法 信息 ; // 获取 Class<? (); 2.

    4.5K20编辑于 2023-03-29
  • 来自专栏数据结构与算法

    Day2上午解题报告

    输入输出样例 输入样例#1 4 3 5 4 11 2 1 3 17 输出样例#1:  3 【样例解释】 从1号楼跳到 2号楼再跳到 3号楼是一种 可行 的方案 。 说明 对于 30%的数据, 1≤? 输入输出样例 输入样例#1:  4 3 5 4 7 6 5 输出样例#1: 1 1 2 3 4 输入样例#2:  4 11 17 21 12 20 15 输出样例#22 4 7 8 13 3 8 9 正解 先对给出以及枚举的数的数进行排序 设枚举的数为$a_1,a_2$ 给出的数为$b_1,b_2$ 性质: a1+a2==b1 a1+a3==b2 设a2+a3=x 枚举a2+a3等于b里面的哪个数 +z[p])&1) return; 18 res[1]=(z[1]+z[2]+z[p])/2-z[p]; 19 res[2]=z[1]-res[1]; 20 res[3]=z[2 输入输出样例 输入样例#1: 1 5 2 3 7 1 3 2 2 5 3 0 输出样例#1:  2 1 说明 对于 30%的数据, 1≤?,?≤103。 对于另外 30%的 数据,每次询问?一样。

    1.1K40发布于 2018-04-11
领券