rabbitmq - 类似于消息队列的软件,可以重新排序事件
问题描述
我正在寻找一些有点像消息队列但可以重新排序事件的软件。像 logstash、kafka 或 rabbit MQ 之类的东西。
我的用例是我们正在接收事件,主要是按顺序进行,但偶尔会有一个带有较旧时间戳的事件,如果“跳过队列”并接下来处理它会很好。(我们可以处理乱序事件,但效率较低)。
排队的项目需要有磁盘支持的保证交付(即程序重新启动不应导致数据丢失)
我能找到的最接近的是Rabbit MQ 的优先级队列- 它允许您定义多达 256 个优先级1,并且优先级较高的消息在较低优先级的消息之前传递。这可能适用于某种启发式方法(例如,优先级current_time - message_time
以分钟为单位),但这似乎并不理想。
有更好的吗?
1虽然建议不要超过 10
解决方案
使用 Kafka,您将获得最大的灵活性。
如果您在顶部使用 KSQL,那么您可以将优先级、已处理属性添加到您的消息中,然后您可以根据您的需要有效地创建流、排序、过滤流。
推荐阅读
- python - Way to Include/Exlude Directories Controlling AWS Lambda Size Serverless
- c# - 在 EF 代码中交叉包含相同的表关系引发错误违反多重性约束
- jsf - Concatenation inside a JSF expression
- javascript - How to stop scroll event when path application changed?
- java - IllegalAccessError 到方法 copyOfRange Kotlin
- php - PhpStorm 缩进设置(与 GitHub 显示不同)
- elasticsearch - 使用 Kafka Connect Elasticsearch 连接器的消息顺序
- ruby-on-rails - 使用 heroku 调度程序更改测功机大小
- java - 如果状态为成功,则 else 也阻止在 android 中执行
- docker - CircleCI docker撰写权限被拒绝?