- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在考虑使用 Redis Pub/Sub 来替代 RabbitMQ。
根据我的理解,Redis 的发布/订阅与每个订阅者保持着持久连接,如果连接终止,所有 future 的消息都将丢失并掉落在地板上。
一个可能的解决方案是使用列表(和阻塞等待)来存储所有消息和发布/订阅,仅作为通知机制。我认为这让我完成了大部分工作,但我仍然对失败案例有些担忧。
最佳答案
当订阅者(消费者)死亡时,您的列表将继续增长,直到客户返回。一旦达到特定限制,您的生产者可以(从任一侧)修剪列表,但这是您需要在应用程序级别处理的事情。如果您在每条消息中包含一个时间戳,您的消费者就可以根据消息的年龄采取行动,假设您有应用程序逻辑要对消息年龄强制执行。
我不确定格式错误的消息将如何进入系统,因为与 Redis 的连接通常是具有完整性保证的 TCP。但如果发生这种情况,可能是由于生产者层的消息编码错误,您可以通过保持接收消费者异常消息的每个生产者队列来提供一种处理错误的通用机制。
重试策略在很大程度上取决于您的应用程序需求。如果您需要 100% 确保消息已被接收和处理,那么您应该考虑使用 Redis 事务(MULTI/EXEC)来包装消费者完成的工作,这样您就可以确保客户端不会删除消息,除非它已经完成了它的工作。如果您需要显式确认,则可以在专用于生产者进程的队列上使用显式 ACK 消息。
如果不进一步了解您的应用需求,就很难知道如何做出明智的选择。通常,如果您的消息需要完全的 ACID 保护,那么您可能还需要使用 redis 事务。如果您的消息仅在及时时才有意义,那么可能不需要交易。听起来好像您不能容忍丢失的消息,因此您使用列表的方法很好。如果您需要为您的消息实现一个优先级队列,您可以使用排序集(Z 命令)来存储您的消息,使用它们的优先级作为分值,以及轮询消费者。
关于具有可靠性的 Redis Pub/Sub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192177/
01、记录器的生命周期 Serilog 大多数情况下“只需使用”,并且在创建和处理日志记录器时不需要过多考虑。然而,由于以下原因: 某些接收器(sink)涉及后台进程,特别是那些使用网络的接收器;
有在项目中使用过Java Kryonet库的 friend 愿意分享一下经验吗?我看到它被推荐过几次,但实际上没有看到任何人谈论他们使用它的经历。 具体来说,我想确保它可靠且相对稳定。或者我应该考虑使
如果我不希望用户能够访问某个页面,我需要重定向用户。例如,header('Location: ../acc/login.php'); 有多可靠?浏览器可以忽略 302 错误吗,这是正确的方法吗?提前致
我一直在使用 ZeroMQ 的请求/响应套接字来在 Web 应用程序和用于卸载处理的从属应用程序之间交换消息。我注意到在某些情况下,并不是所有发送的 ZMQ 消息都被另一方实际接收到。更奇怪的是,即使
我目前的情况是我有一个应用程序需要在新数据到达数据库表时得到通知。数据来自外部来源(我无法控制——这是唯一的集成选项)。当新数据到达时,我的应用程序需要采取某些操作——基本上是查询新数据、处理它、将结
嗨 如果lucene索引上只发生插入操作(没有删除/更新),那么docID是否真的没有改变?而且它也可靠 如果这是真的,我想用它来增量加载 FieldCache 以降低加载所有文档的开销,最好的解决方
我正在尝试使用 ActiveMQ 创建可靠的 JMS 环境。我打算采用 JDBC 主从集群方法,在这种方法中,我可以将主服务器收到的消息保存到数据库中,从服务器可以选择这些消息并运行它们,以防主服务器
我正在开发依赖于设备 UUID 的 Apache Cordova 应用程序。几个问题在我脑海中闪过,但不幸的是,我似乎无法在任何地方找到答案。 获取的 device.uuid 对于每个平台是否都相同,
这个问题是对 Intercepting/Rerouting TCP SYN packets to C++ program in linux 的(某种)跟进. 问题是:如果 SYN 或任何其他 TCP
是否存在 localIdentifier 可能会更改或不准确的情况?我正在开发一个备份照片的应用程序,我的同事告诉我不能信任 localIdentifier。然而,在做了一些研究之后,我一直无法找到任
我们的应用程序使用 APNS 来接收推送通知。然而,我们的客户声称他们的一些设备没有收到通知,并争辩说他们“必须”确保通知 100% 送达。但我读过somewhere APNS 不是 100% 可靠的
来自ZooKeeper FAQ : Reliability: A single ZooKeeper server (standalone) is essentially a coordinator w
我正在制作一个需要存储一些用户数据的 PhoneGap 应用程序。在初始应用程序启动时,将要求用户输入 URL。由于 URL 可能很长,我希望将其保存在用户的设备上,这样他就不需要在每次启动应用程序时
我是 Node.js 的新手,目前正在质疑它的可靠性。 根据我目前看到的情况,似乎存在一个重大缺陷:任何 Uncaught Error /异常都会导致服务器崩溃。当然,您可以尝试对您的代码进行防弹或将
Google PubSub 是否适合小批量(10 条消息/秒)但任务关键型消息传递,保证在任何固定时间段内及时传递每条消息? 或者,它是否更适合高吞吐量,其中个别消息可能偶尔会丢失或无限期延迟? 编辑
Erlang据报道,它已在生产系统中使用了 20 多年,正常运行时间百分比为 99.9999999%。 我做了如下数学计算: 20*365.25*24*60*60*(1 - 0.999999999)
我最近看到this SO 发布有关获取请求域的文章。我想知道此信息是否可靠(即攻击者可以“伪造”此信息吗?)。具体来说,域和请求类型(GET、POST 等)。我问的原因是因为我不确定是否可以使用它来保
谁能告诉我,当将操作发布到时间轴时,Facebook 的开放图谱 API 的可靠性如何? 背景: 我创建了一个新的 FB iOS 应用 使用自定义对象“blogpost”创建新的操作类型“write”
我正在进行 Windows Azure 试用,以评估将多个商业 ASP.NET 站点从专用托管迁移到 Azure 的情况。一切都很顺利......直到现在! 一些背景 - 站点是使用 SQL Azur
在进行代码审查时我偶然发现了 GWM在 Java-Spring-GWT Web 应用程序中。由于我不知道这个产品,我访问了它的网站,发现它的开发似乎在 2007 年停止了,因为它的最后一个稳定版本是
我是一名优秀的程序员,十分优秀!