我有一个场景,我想将消息发送到一个警报服务,该服务将处理消息并将其发送到hipchat。
但我希望这条消息只活跃一分钟。如果hipchat关闭(假设(,则不应将消息发送到hipchat。
我正在使用kafka,因此其中一个服务将消息发送给kafka然后该消息由警报服务(它轮询服务(使用,该服务处理该消息(kafka消费者(,同时检查现在的时间和消息的时间是否不超过一分钟。如果没有,它会立即将消息发送到hipchat。
增强:
- 我想要一种构建自毁消息的方法,这样我一分钟后就会自动消失。有办法和卡夫卡一起做吗?或者有比卡夫卡更好的替代品吗(flink/sqs(。如果是,如何
您可以使用主题级配置中描述的Kafka主题配置retention.ms
和delete.retention.ms
。
在您的情况下,retention.ms
应设置为1分钟(60000毫秒(,delete.retention.ms
应设置为0。这样,这些消息在被删除之前会在卡夫卡主题中停留一分钟。然而,这也意味着,如果您的消费者花费超过一分钟的时间来消费所有消息(尤其是在从头阅读主题时(,您可能会丢失消息。
这些配置的详细信息如下:
delete.reduration.ms:为日志压缩主题保留删除逻辑删除标记的时间量。如果使用者从偏移量0开始读取,则此设置还提供了使用者必须完成读取的时间限制,以确保他们获得最后阶段的有效快照(否则,可能会在完成扫描之前收集删除逻辑删除(。
retention.ms:如果我们使用";删除";保留策略。这表示一个SLA,说明消费者必须多久读取他们的数据。如果设置为-1,则不应用时间限制。