- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
Redis Pub/Sub 中有确认的概念吗?
例如,当使用 RabbitMQ 时,我可以让两个 worker 在不同的机器上运行,当我向队列发布一条消息时,只有一个 worker 会 ack/nack 它并处理消息。
但是我发现使用 Redis Pub/Sub 时,两个工作人员都会处理消息。
考虑这个简单的例子,我在两台不同的机器/客户端上运行了这个 go 例程:
go func() {
for {
switch n := pubSubClient.Receive().(type) {
case redis.Message:
process(n.Data)
case redis.Subscription:
if n.Count == 0 {
return
}
case error:
log.Print(n)
}
}
}()
当我发布消息时:
conn.Do("PUBLISH", "tasks", "task A")
两个 go routines 都会接收它并运行 process 函数。
有没有办法实现与 RabbitMQ 类似的行为?例如。第一个确认消息的工作人员将是唯一接收并处理它的人。
最佳答案
Redis PubSub 更像是一种广播机制。
如果你想要队列,你可以使用BLPOP连同 RPUSH获得相同的互动。请记住,RabbitMQ 可以执行 Redis 中不存在的各种其他操作。但是,如果您正在寻找简单的作业调度/请求处理方式,这会很好。
关于go - Redis 发布/订阅 Ack/Nack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32037803/
在消费者确认消息之前,消费者是否可以通过任何方式修改消息的状态,以便当消费者在重新传递时消费它时,它会看到已更改的状态。 我宁愿不拒绝 + 重新排队新消息,但如果这是完成此任务的唯一方法,请告诉我。
我有一个成功连接到 FCM XMPP 测试服务器的 python3 程序。但是,在发送 JSON 后,它每次都会返回一条 SERVICE_UNAVAILABLE nack 消息。同一段代码上周运行完美
这是我正在尝试做的事情: 出列消息 对消息执行操作 如果操作失败,将消息放回队列 如果操作成功,确认消息 我现在的问题是,如果操作失败,消息不会重新排队,但会保持未确认状态。如果我进入 RabbitM
我是 rabbitmq 的新手,我想知道在我可以确认该队列上的交付之前删除队列时处理错误的最佳方法是什么。 if err := handle(); err != nil { delivery.Na
我的经验:在发布/订阅场景中,如果订阅者 nacks 一条消息,则该 nacks 消息会立即在队列的前面重新排队,这将是订阅者获得的下一条消息。 有没有办法避免这种情况?是否有可能以一种下一条消息绝对
I2C 从机在向主机传输数据时是否允许 NACK? 从规范(2.1)来看,从设备在传输时(即从从设备向主设备发送数据)实际上无法向主设备发送 NACK。我已经在网上搜索过,但找不到任何帮助。为什么?我
我正在尝试使用 apache nms stomp 发送/接收消息。我不能使用 Transnational ack 模式,因为使用 hornetq。我的消费场景: 接收消息 处理消息 如果处理成功则确认
我想测试我的 Rabbitmq 实现。我有一个队列和一个消费者,我希望有第三个元素来监听/嗅探队列响应,因此如果队列响应 nack 或通过,则测试将失败。 你知道我该怎么做吗? 非常感谢 最佳答案 你
我们有两个对等点的 WebRTC 应用程序,当通话正在进行时,我遇到了大约 5% 的数据包丢失(在 webrtc-internals 上检查过)。我也看到了 Nacks。 想知道我的设置中是否实现了
我有一个关于 I2C 协议(protocol)的问题。我在维基百科页面上找到了这个。 “如果发送器看到一个 1 位 (NACK),它会了解到: 1) 从机无法接受数据。 2)没有这样的奴隶 3) 命令
我目前正在尝试通过消息代理 RabbitMQ 进行通信时可能发生的故障场景。目标是评估如何使此类沟通更具弹性。 特别是,我想在producer-commit mode中发送消息时触发nack(不确认)
我正在使用 修改 pika header properties.headers = { 'myheader': myheader } 但我正在使用 delivery_tag channel.
我一直在研究 RabbitMq.net 和消息确认。如果消费者能够处理消息,您可以以 的形式发回确认 channel.BasicAck(ea.DeliveryTag, false); 这会将其从队列中
Redis Pub/Sub 中有确认的概念吗? 例如,当使用 RabbitMQ 时,我可以让两个 worker 在不同的机器上运行,当我向队列发布一条消息时,只有一个 worker 会 ack/nac
我正在尝试将 STM32 编写为具有简单接口(interface)的 I2C 从设备,其工作原理如下: 所以master每次都会发送一个注册地址,然后从该注册地址写入或读取。 然后从机需要始终接收 1
我最近的项目需要使用 i2c 通信,使用单个主设备和多个从设备。我知道,对于主机发送的每个数据字节(实际数据),从机以 Nack\Ack(1,0) 响应。 我对如何解释 Nack 和 ACK 感到困惑
channel.basicQos(1); while (true) { GetResponse res = channel.basicGet(TEST_QUEUE, false); i
如果我的问题看起来很幼稚,我是新手,很抱歉。 我有一个接收 hl7 消息的欢乐 channel ,这很好,而且我在 Source 和 Destination 中都有一些过滤器和转换器。 当目的地结束时
否定确认的行为是将接收到的消息的可见性超时更改为 0。在为 JMS 创建 SQS Factory 时,NACK_TIMEOUT 的值不可配置。 https://github.com/awslabs/a
有没有办法配置拉取订阅,使导致错误并nacked的消息重新排队(并重新传递)不超过n次? 理想情况下,如果最后一次处理也失败,我想处理这种情况(例如,记录此消息被放弃处理并将被删除)。 或者可能可以找
我是一名优秀的程序员,十分优秀!