我正在尝试基于BookSleeve构建一个超级简单的队列示例。
以下是到目前为止队列消费者方面的内容:
using System;
using System.Text;
using BookSleeve;
static class Program
{
static void Main()
{
using (var redis = new RedisConnection("127.0.0.1"))
{
redis.Open();
while (true)
{
我使用库节点-redis:
let client = redis.createClient();
let blpopAsync = util.promisify(client.blpop).bind(client);
let rpushAsync = util.promisify(client.rpush).bind(client);
async function consume() {
let data = await blpopAsync('queue', 0); // the program is blocked at here
}
async functio
我正在尝试使用blpop命令,它将在10秒结束后返回一些长值:
val r = new RedisClient("10.0.0.15", 6379)
implicit val parseV = new com.redis.serialization.Parse[Long](f=>{ByteBuffer.wrap(f).getLong})
val rs = r.blpop[String,Long](10,"queue")
rs match{
case Some(s)=>println(s._2)
我需要在eventmachine上有一个无限循环来不断读取redis队列。下面是我的代码。递归是正确的方式吗?我尝试过loop do循环,但不能让它那样工作。
require 'em-hiredis'
def read
d = @redis.blpop 'queue', 0
d.callback do |_, value|
p value
read
end.errback do |e|
p e
EM.next_tick { read }
end
end
EM.run do
@redis = EM::Hire
我有一个Redis列表,发布者在其中推送一些消息(JSON序列化)。
另一方面,订阅者可以获取每个JSON blob并执行某些操作。最简单的方法是按顺序执行此操作。但我想让它更快一点;我想维护一个工作进程池(多个使用者),每当新消息到达时,检查池中是否有“空闲”进程可以开始处理,我正在寻找以下基于池的版本
while not False:
_, new_user = conn.blpop('queue:users')
if not new_user:
continue
try:
process_new_user(new_u