草庐IT

private-pub

全部标签

design-patterns - 用于多个生产者和多个消费者的 Redis pub sub

假设有N个生产者和订阅这N个生产者的M个用户。这里N生产者生产N种不同类型的消息,例如producer1producesmessageType1,producer2producesmessageType2,producer3producesmessageType3,...producerNproducesmessageTypeN.M个用户可以订阅这些消息。一个用户可以订阅多种类型的消息。例如user1consumes(messageType1,messageType2,messageType10)user2consumes(messageType14,messageType5)..us

java - redis pub sub 和/或列表来实现数据收集器

我正在开发一个需要按计划从第三方系统收集数据的模块,比如每5分钟一次。启动数据收集的触发器来自Multi-TenancyUI。因此,10个租户可以告诉该模块同时开始收集数据。我从使用一个简单的redis队列开始,所有来自UI的启动请求都被发送到队列中,该模块充当工作人员,获取作业并运行它们。问题是我们需要在1分钟内完成一个数据收集周期,如果有100个作业,如果我们连续进行,我们将花费一分钟多的时间。数据收集需要按计划进行。所以UI说每5分钟运行一次数据收集,直到我说停止!因此,我们添加了另一个可以开始减轻负载的工作器。我的问题是:如何在不在其中一个工作人员中保持状态(预定线程执行程序)

ruby-on-rails - 私有(private)方法中的 HGET 不返回哈希

由于某种原因,我的hget没有找到或返回我在公共(public)方法中设置的散列。我不明白为什么。这一切都在一个继承自ApplicationController的Controller中,这是我定义我的redis初始化程序的地方:defredisThread.current[:redis]||=Redis.newend然后在我的Controller中我这样做来设置散列:defreturn_customeremail=params["email"]customer=Customer.find_by(email:email)credit_amount=customer.credit_amou

Redis 缓存 Pub Sub 接收后删除

有没有办法在订阅者收到消息后删除该订阅者的消息,以防止同一channel的其他订阅者阅读该消息?注意:Azure服务总线支持此行为。 最佳答案 不,你不能用Redispubsub做到这一点。但是,您可以使用RedisStream实现目标.您可以使用XGROUPCREATE命令创建消费者组。对于RedisStream中的每条消息,组中只有一个消费者可以阅读该消息。检查this了解详情。 关于Redis缓存PubSub接收后删除,我们在StackOverflow上找到一个类似的问题:

node.js - node.js 和 redis 中的私有(private) channel 。如何?

我写了一个简单的脚本(app.js)来订阅redis的channelvarapp=require('express').createServer(),io=require('socket.io').listen(app);varredis=require("redis");app.listen(8080);//////////////Devenvironment;replacebyPERLinproductionuse.app.get('/',function(req,res){res.sendfile(__dirname+'/index.html');});/////////////

redis - Servicestack.Redis Pub/Sub 与其他嵌套 Redis 命令的限制

我对ServiceStack和Redis有很好的体验,但我对线程内的ThreadPool和Pub/Sub以及在消息回调中访问Redis的明显限制感到困惑。我得到的实际错误表明我只能在“当前上下文”中调用“订阅”或“发布”。当我尝试从消息回调执行另一个Redis操作时会发生这种情况。我有一个必须持续运行的流程。在我的例子中,我不能只为一个请求服务一次,而是必须让一个线程一直保持事件状态来进行计算(并且从RESTAPI路由控制这些线程是理想的)。数据必须定期进入流程,并且必须发布数据。该进程还必须存储和检索来自Redis的数据。我正在使用路由和服务来获取数据并将其存储在Redis中,因此这

ruby - Redis -Pub\Sub - 连接到 Redis 超时

我有以下ruby来订阅channel。当我将主机设置为“本地主机”时,我没有遇到任何问题-即脚本启动当我设置为localhost以外的IP地址(redis运行的位置)时,我会超时。连接Redis超时如果我删除:timeout=>0脚本将运行,但我相信这是为订阅者设置的正确值,以确保我的客户端永远不会超时。如何防止订阅者超时?require'redis'$redis=Redis.new:host=>'IPADDRESS',:timeout=>0$redis.subscribe('MyChannel',)do|on|on.messagedo|channel,msg|puts"Mis#{ms

c# - 使用 Redis Pub/Sub 通过 ChangeMonitor 使内存缓存失效

我创建了一个新类,用于使内存缓存数据无效并从Redis加载数据的新副本。此外,它还取决于Redis的发布/订阅功能。publicclassRedisChangeMonitor:ChangeMonitor{privatestringuniqueId;privateISubscribersubscriber;privatestaticLazylazyConnection=newLazy(()=>{ConnectionMultiplexerconnectionMultiplexer=ConnectionMultiplexer.Connect(ConfigurationManager.Conn

使用 Redis pub sub 和 socket io 的 Laravel 广播需要超过 2 秒才能传送

我正在使用Redispubsub和socketio在Laravel中构建一个实时通知应用程序。我正在通过beanstalkd处理队列并运行Laravelqueue:workwithsupervisord。在所有成功设置之后,需要更多或等于3秒才能收到客户端的通知。是正常的还是可以进一步降低???我的操作系统是centos6.9,配备8GB内存和四核至强E3-1220处理器。Php7.0,Laravel5.2版,Redis3.9.103,带有phpredis扩展。 最佳答案 artisanqueue:work命令使用默认的三秒轮询间隔

如何优雅地单元测试 Kotlin/Java 中的 private 方法?

翻译自https://medium.com/mindorks/how-to-unit-test-private-methods-in-java-and-kotlin-d3cae49dccd❓如何单元测试Kotlin/Java中的private方法❓首先,开发者应该测试代码里的private私有方法吗?直接信任这些私有方法,测试到调用它们的公开方法感觉就够了吧。对于这个争论,每个开发者都会有自己的观点。但回到开头的问题本身,到底有没有一种合适的途径来实现私有方法的单元测试?截止到目前,在面对单元测试私有方法的问题时,一般有如下几种选择:不去测试私有方法😜*(选择信任,直接躺平)*将目标方法临时改