首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 TypeScript 和依赖注入实现一个聊天机器人

将你 Discord Bot 添加到你服务器 为了测试我们机器人,需要一台Discord服务器。你可以使用现有服务器或创建新服务器。...client_id=&scope=bot 当你在浏览器中点击此URL时,会出现一个表单,你可以在其中选择应添加机器人服务器。 ?...标准Discord欢迎消息 将bot添加到服务器后,你应该会看到如上所示消息。 创建 .env 文件 我们需要一种能够在自己程序中保存令牌方法。为了做到这一点,我们将使用 dotenv 包。...如果你在服务器通道中输入消息,它应该出现在命令行日志中,如下所示: 1> node src/index.js 2 3Logged in! 4Message received!...在单元测试中关键是定义 isPing():true 或 false 结果。消息内容是什么并不重要,所以在测试中我们只使用 "Non-empty string"。

11.1K20

分布式Redis深度历险-Sentinel

获取主服务器信息 Sentinel会以一定频率服务器发送Info命令获取信息,包括主服务器自身信息比如说服务器id等,以及对应服务器信息,包括ip和port。...Sentinel会定时通过订阅连接_sentinel_:hello频道频道发送消息(对Redis发布订阅功能不太了解同学可以去去了解下),其中包括: Sentinel本身信息,如ip地址、端口号...、配置纪元(见下文)等 Sentinel监视服务器信息,包括ip、端口、配置纪元(见下文)等 同时,Sentinel也会订阅_sentinel_:hello频道消息,也就是说Sentinel即频道发布消息...Sentinel有一个字典对象sentinels,保存着监视同一主服务器其他所有Sentinel服务器,当一个Sentinel接收到来自_sentinel_:hello频道消息时,会先比较发送消息是不是自己...,则选取复制偏移量最大那个 6.如果上一步服务器还有多个,则选取id最小那个

37851
您找到你想要的搜索结果了吗?
是的
没有找到

Redis发布订阅

当有新消息通过 PUBLISH 命令发送频道时,这个消息会被发送给订阅它所有客户端 1.2、Redis发布订阅与消息队列区别 Redis发布订阅(Pub/Sub)和消息队列是两种不同消息传递模式...UNSUBSCRIBE 命令:当客户端发送 UNSUBSCRIBE 命令退订一个或多个频道时,Redis 服务器会将这些频道客户端订阅频道列表中移除,并向客户端返回一个确认退订消息。...当客户端发送 SUBSCRIBE 命令订阅一个或多个频道时,服务器会接收到这个命令,并将这些频道添加到客户端订阅列表中。然后,服务器客户端返回一个消息,确认已经订阅了这些频道。...当客户端发送 UNSUBSCRIBE 命令退订一个或多个频道时,服务器会接收到这个命令,并将这些频道客户端订阅列表中移除。然后,服务器客户端返回一个消息,确认已经退订了这些频道。...例如,客户端可以发送如下命令名为 mychannel 频道发布一条消息: PUBLISH mychannel "hello" 服务器会返回一个整数,表示消息成功发送客户端数量。

1K30

分布式Redis深度历险-Sentinel

获取主服务器信息 Sentinel会以一定频率服务器发送Info命令获取信息,包括主服务器自身信息比如说服务器id等,以及对应服务器信息,包括ip和port。...Sentinel会定时通过订阅连接_sentinel_:hello频道频道发送消息(对Redis发布订阅功能不太了解同学可以去去了解下),其中包括: Sentinel本身信息,如ip地址、端口号...、配置纪元(见下文)等 Sentinel监视服务器信息,包括ip、端口、配置纪元(见下文)等 同时,Sentinel也会订阅_sentinel_:hello频道消息,也就是说Sentinel即频道发布消息...Sentinel有一个字典对象sentinels,保存着监视同一主服务器其他所有Sentinel服务器,当一个Sentinel接收到来自_sentinel_:hello频道消息时,会先比较发送消息是不是自己...,则选取复制偏移量最大那个 6.如果上一步服务器还有多个,则选取id最小那个 原文:Java架构笔记

28021

第三章· Redis消息队列

任务队列好处 1)松耦合。 生产者和消费者只需按照约定任务描述格式,进行编写代码。 2)易于扩展。 多消费者模式下,消费者可以分布在多个不同服务器中,由此降低单台服务器负载。...可以这么简单理解: 1)Subscriber:收音机,可以收到多个频道,并以队列方式显示 2)Publisher:电台,可以往不同FM频道中发消息 3)Channel:不同频率FM频道 ...主要应用:通知、公告  多个发布者一个订阅者模型 可以将PubSub做成独立HTTP接口,各应用程序作为PublisherChannel中发送消息,Subscriber端收到消息后执行相应业务逻辑... 多个发布者多个订阅者模型 故名思议,就是可以不同Channel中发送消息,由不同Subscriber接收。 主要应用:群聊、聊天。...查看订阅与发布系统状态 _注意:_使用发布订阅模式实现消息队列,当有客户端订阅channel后只能收到后续发布到该频道消息,之前发送不会缓存,必须Provider和Consumer同时在线。

27960

基于Go语言使用NATS Streaming构建分布式系统和微服务

基于 Go 语言使用 NATS Streaming构建分布式系统和微服务 一段时间前,我写了一篇名为 Go 语言开发者介绍 NATS 博客文章以便使用Apcera NATS 作为基于GO语言构建分布式系统和微服务消息系统...频道 ( Channel ) 频道是 NATS Streaming 服务器中最重要概念。频道发送数据并从中消耗客户端。...与基本 NATS 服务器不同,NATS Streaming 服务器不支持频道通配符。你可以使用配置来控制频道数量。发布到频道消息存储在频道消息日志中,如下图所示。...在创建订阅时,服务器发送由订阅客户端提供最大数量订阅消息(你可以指定订阅消息最大数量)。当订户客户端收到消息时,ACK(确认)将被发送服务器。...使用队列组创建订户客户端 订阅者客户端可以通过指定一个队列组来创建。具有相同队列名称同一频道多个订户客户端形成队列组。队列订阅者可让你分发多个订户消息处理。

12K51

【云原生进阶之PaaS中间件】第一章Redis-1.7发布订阅模式

(订阅者),而是将消息分成不同类别(频道),然后将消息发送给订阅了这些类别的所有接收者。...在 Redis 中,发布/订阅模式实现基于 Redis 事件机制,即订阅者通过执行 SUBSCRIBE 命令将自己监听器添加到 Redis 服务器事件循环器中,当发布者通过 PUBLISH 命令指定频道发送消息时...当发布者通过 PUBLISH 命令指定频道发送消息时,Redis 服务器会将消息发送给与该频道相关事件处理器中所有监听器,从而实现消息发布和订阅。...基于模式发布/订阅与基于频道发布/订阅实现原理类似,只是在订阅时可以使用通配符(*)匹配多个频道,从而实现更加灵活消息过滤和订阅。         ...当发布者通过 PUBLISH 命令与匹配该模式频道发送消息时,Redis 服务器会将消息发送给与该模式相关事件处理器中所有监听器,从而实现基于模式消息发布和订阅。

24420

Redis - sentinel cluster

订阅连接:订阅某个频道频道消息马上读取,一个频道消息会发给多个订阅者,所以是一发多收 命令连接:收发方 简单通过命令通信(udp?)...检查服务器和主服务器间通信延迟 3. 检测服务器偏移量是否和当前偏移量相同,不同的话就要发送命令,让服务器偏移量跟上 4....sentinel 配置中直接指明 他需要监听服务器 IP 和 端口 (未知是否可以监听多个主) sentinel 启动时候直接服务器 发送 INFO ,主服务器收到后会发送自己服务器列表...是订阅主服务器 sentinel-hello 频道,只要有一个sentinel 监听这个主服务器,主服务器就会这个频道发送 消息。...如果有多个sentinel 监听这个频道,而且有新 sentinel 监听主服务器,那么这些监听 主服务器 sentinel 都会认识到 新 sentinel 多个 sentinel 之间单纯创建

63130

redis系列:哨兵

步骤如下 初始化服务器 使用Sentinel专用代码 初始化Sentinel状态 创建连服务器网络连接 4.1 初始化服务器 Sentinel 本质上只是一个运行在特殊模式下Redis服务器,所以初始化时和不同...哨兵会服务器创建两个异步网络连接 命令连接,用于服务器发送命令,并接受命令。 订阅连接,专门用于订阅主服务器_sentinel_:hello频道。...5.3 获取其他Sentinel信息 在获取其他哨兵信息之前,先要知道服务器服务器发送信息和接收来自主服务器服务器频道信息。...5.3.2 接收来自主服务器服务器频道信息 当Sentinel与一个主服务器或者服务器建立起订阅连接之后,Sentinel就会通过订阅连接,服务器发送命令: SUBSCRIBE __sentinel...当哨兵接收到一条来自__sentinel__:hello频道消息时,会出现下方 判断该消息是否是自己发送,是则忽略这条消息 消息不是自己发送时,说明有新哨兵 查看自己是否存有该哨兵信息,有则更新该哨兵信息

1.7K40

Redis HyperLogLog命令操作实例

3 PFMERGE destkey sourcekey [sourcekey …] 将多个 HyperLogLog 合并为一个 HyperLogLog Redis发送订阅 发送者(发布者)不是计划发送消息给特定接收者...而是发布消息分到不同频道,不需要知道什么样订阅者订阅。订阅者对一个或多个频道感兴趣,只需接收感兴趣消息,不需要知道什么样发布者发布。...管道Pipelining 过去:客户端服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应 现在:在旧请求还未响应前,新请求也能发送服务器并处理。...假设在上面示例中,ID 0到ID 10000用户将进入实例R0,而ID 10001到ID 20000用户将进入实例R1,以此类推。...哈希分区 在这种类型分区中,使用散列函数(例如,模函数)将键转换成数字,然后将数据存储在不同Redis实例中。

65330

redis之单机数据库

:1) 客户端服务器发送命令请求。...1.同时使用多个save选项Redis允许用户同时服务器提供多个save选项,当给定选项中任意一个条件被满足时,服务器就会执行一次BGSAVE。...除此之外,客户端还可以通过频道发送消息方式,将消息发送频道所有订阅者,我们把这些发送消息客户端称为发送者(publisher)。...客户端订阅频道图片订阅模式图片3.5.1、PUBLISH:频道发送消息用户可以通过执行PUBLISH命令,将一条消息发送至给定频道:...命令,让客户端订阅给定一个或多个频道:SUBSCRIBE channel [channel channel ...]SUBSCRIBE命令在每次成功订阅一个频道之后,都会执行命令客户端返回一条订阅消息

63120

Redis Sentinel执行流程

获取主服务器信息 Sentinel默认每10s一次,被监控服务器发送info命令,获取主服务器和其下属服务器信息。 三....在命令连接建立之后,Sentinel还是默认10s一次,服务器发送info命令,并记录服务器信息。 四....服务器服务器发送消息 默认情况下,Sentinel每2s一次,所有被监视服务器服务器所订阅_sentinel_:hello频道发送消息消息中会携带Sentinel自身信息和主服务器信息...接收来自主服务器服务器频道信息 多个监控同一个主服务器Sentinel,都会发送频道消息,这样其他Sentinel就都会接收到。...Sentinel集群中各个节点,通过频道消息感知彼此存在。

89560

Redis使用及源码剖析-20.Redis哨兵(Sentinel )-2021-2-4

创建连接示意图如下所示: 三、获取主服务器信息 哨兵默认会以每10s一次频率被监视服务器发送info命令,主服务器会对命令进行回复,回复内容包括主服务器运行id以及主服务器下属服务器信息...示意图如下所示: 创建连接以后,哨兵也会每10s一次频率服务器发送info命令,获得对应信息来更新如下所示服务器结构: 五、主从服务器发送信息 哨兵会以每2秒一次频率,通过命令连接主从服务器发送信息...,发送信息为:__sentinel__:hello频道发布消息消息内容包括哨兵ip、端口、运行id、主服务器名称、ip、端口等信息,服务器发送是它所属服务器名称、ip、端口。...六、主从服务器接收信息 当哨兵和主从服务器建立起订阅连接以后,就会通过订阅连接,服务器发送订阅__sentinel__:hello频道命令。...如下所示: 2.创建连其他哨兵命令连接 当哨兵通过订阅频道获取到其他哨兵信息时,还会根据获取消息创建指向其他哨兵节点命令连接。

23940

Redis HA 实践(Redis Sentinel)

; 当客户端试图连接失效服务器时, 集群也会客户端返回新主服务器地址, 使得集群可以使用新主服务器代替失效服务器。...订阅连接用于订阅指定频道,从而发现 监视同一主服务器其他 Sentinel。 发现并连接服务器 Sentinel 通过服务器发送 INFO 命令来自动获得所有服务器地址。...image.png 发现其他 Sentinel Sentinel 会通过命令连接被监视主从服务器发送 “HELLO” 信息,该消息包含Sentinel IP、端口号、ID 等内容,以此来向其他...选出一个服务器,并将它升级为主服务器。 5. 被选中服务器发送 SLAVEOF NO ONE 命令,让它转变为主服务器。 6....已下线主服务器服务器发送 SLAVEOF 命令,让它们去复制新服务器。 8. 当所有服务器都已经开始复制新服务器时, leader Sentinel 终止这次故障迁移操作。

1.2K30

Redis哨兵模式详解

在一主多Redis系统中,可以使用多个哨兵进行监控任务以保证系统问题。 ? 实现哨兵模式 1.配置一主两   主服务器端口号6379,两个服务器端口分别为:6380和6381....和主数据库连接建立完成后,哨兵会使用连接2发送如下命令: 每10秒钟哨兵会主数据库和数据库发送INFO 命令 每2秒钟哨兵会主数据库和数据_sentinel_:hello频道发送自己消息。...接下来哨兵主从数据库_sentinel_:hello 频道发送信息来与同样监控该数据库哨兵分享自己信息。...哨兵通过监听_sentinel_:hello频道接收到其他哨兵发送消息后会判断哨兵是不是新发现哨兵,如果是则将其加入已发现哨兵列表中并创建一个到其连接(哨兵与哨兵只会创建用来发送PING命令连接...优先级通过replica-priority参数设置 2 优先级相同,则复制命令偏移量越大(复制越完整)越优先 3 如果以上都一样,则选择运行ID较小数据库 选出一个数据库后,领头哨兵将数据库发送

4.9K61

消息队列

消息队列 一、消息模型 点对点 消息生产者消息队列中发送了一个消息之后,只能被一个消费者消费一次。 发布/订阅 消息生产者频道发送一个消息之后,多个消费者可以频道订阅到这条消息并消费。...发布与订阅模式和观察者模式有以下不同: 观察者模式中,观察者和主题都知道对方存在;而在发布与订阅模式中,生产者与消费者不知道对方存在,它们之间通过频道进行通信。...观察者模式是同步,当事件触发时,主题会调用观察者方法,然后等待方法返回;而发布与订阅模式是异步,生产者频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。...流量削锋 在高并发场景下,如果短时间有大量请求到达会压垮服务器。 可以将请求发送消息队列中,服务器按照其处理能力消息队列中订阅消息进行处理。...通过使用消息队列,一个模块只需要向消息队列中发送消息,其它模块可以选择性地消息队列中订阅消息从而完成调用。 三、可靠性 发送可靠性 发送端完成操作后一定能将消息成功发送消息队列中。

3K20

消息队列

一、消息模型点对点消息生产者消息队列中发送了一个消息之后,只能被一个消费者消费一次。发布/订阅消息生产者频道发送一个消息之后,多个消费者可以频道订阅到这条消息并消费。...发布与订阅模式和观察者模式有以下不同:观察者模式中,观察者和主题都知道对方存在;而在发布与订阅模式中,生产者与消费者不知道对方存在,它们之间通过频道进行通信。...观察者模式是同步,当事件触发时,主题会调用观察者方法,然后等待方法返回;而发布与订阅模式是异步,生产者频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。...流量削锋在高并发场景下,如果短时间有大量请求到达会压垮服务器。可以将请求发送消息队列中,服务器按照其处理能力消息队列中订阅消息进行处理。...通过使用消息队列,一个模块只需要向消息队列中发送消息,其它模块可以选择性地消息队列中订阅消息从而完成调用。三、可靠性发送可靠性发送端完成操作后一定能将消息成功发送消息队列中。

17230

redis研究

发送信息客户端)不是将信息直接发送给特定接收者(接收信息客户端), 而是将信息发送频道(channel), 然后由频道将信息转发给所有对这个频道感兴趣订阅者。...发送者无须知道任何关于订阅者信息, 而订阅者也无须知道是那个客户端给它发送信息, 它只要关注自己感兴趣频道即可。...提醒(Notification): 当被监控某个 Redis 服务器出现问题时, Sentinel 可以通过 API 管理员或者其他应用程序发送通知。...; 当客户端试图连接失效服务器时, 集群也会客户端返回新主服务器地址, 使得集群可以使用新主服务器代替失效服务器。...支持模式匹配,能够实时订阅与取消频道。一些可靠性要求没那么高事件订阅与发布是可以用RedisPub/Sub代替MQ方案。 队列 现代互联网应用大量地使用消息队列(Messaging)。

79380

Redis基础知识(二)

如果网络延迟较大,那将会花费太多时间,redis提供了pipline可以解决这个问题,redis可以在pipline中发送多个消息而无需等待每个消息答复过程。...pipline效果是很明显 Redis发布订阅模式 Redis通过PUBLISH 、SUBSCRIBE 等命令实现了订阅与发布模式,发布者可以多个频道发布消息,订阅者可以订阅多个频道,当然一个频道也可以有多个订阅者...命令 频道发送消息 publish channel message 例如 返回是接收到消息订阅者数量 127.0.0.1:6379> publish CCTV1 worldnews (integer...一个主服务器可以有多个服务器服务器也可以有多个服务器服务器还可以以类似级联结构连接到其他服务器。 Redis复制在主服务器端无阻塞。...主服务器会把缓冲区新数据发送服务器 部分同步 当主从连接中断后,服务器使用psync命令服务器发送上次复制偏移量,以及记录masterID,如果上次复制偏移量仍存在主服务器缓冲区中,

53740

Laravel学习教程之广播模块详解

广播是指发送发送一条消息,订阅频道各个接收方都能及时收到消息;比如 A同学写了一篇文章,这时候 B同学在文章底下评论了,A同学在页面上是不用刷新就能收到提示有文章被评论了,这个本质上就是A同学收到了广播消息...,这个广播消息是由B同学评论这个动作触发了发送广播消息; 在整个广播行为中,有一个重要概念叫频道channel,频道类型有 公共频道public 私有频道private 存在频道presence 移动端订阅了公共频道...public,会直接提示成功;私有频道private和存在频道presence在进行订阅过程中,会服务器发送权限验证,看是不是有权限可以订阅该频道;私有频道private和存在频道presence...(data) { alert(data); }); 如果订阅是公共频道,则不会服务器端请求权限检查;如果是私有频道频道名是以private-开头)或存在频道频道名是以presence...事件使用IlluminateBroadcastingInteractsWithSockets trait; 前端发送过来请求头部要携带X-Socket-ID信息; 事件触发执行broadcast(new

1.5K50
领券