apache-kafka - Kafka是否支持主题或消息的优先级?

标签 apache-kafka

我正在探索一个事实,即Kafka是否支持任何要处理的队列或消息的优先级。

似乎它不支持任何此类东西。我在Google上搜索并找到了支持此功能的邮件存档:
http://mail-archives.apache.org/mod_mbox/incubator-kafka-users/201206.mbox/%3CCAOeJiJhVHsr=d6aSTihPsqWVg6vK5xYLam6yMDcd6UAUoXf-DQ@mail.gmail.com%3E

是否有人在这里配置了Kafka来优先处理任何主题或消息?

最佳答案

Kafka是一种快速,可扩展的,通过其设计,分区和复制的提交日志服务本质上是分布式的,因此主题或消息没有优先级。
我也遇到了同样的问题。解决方案非常简单。在kafka队列中创建主题,让我们说:

high_priority_queue

medium_priority_queue

low_priority_queue


在high_priority_queue中发布高优先级消息,在medium_priority_queue中发布中优先级消息。
现在,您可以创建kafka使用者并为所有主题打开流。

  // this is scala code 
  val props = new Properties()
  props.put("group.id", groupId)
  props.put("zookeeper.connect", zookeeperConnect)
  val config = new ConsumerConfig(props)
  val connector = Consumer.create(config)
  val topicWithStreamCount = Map(
       "high_priority_queue" -> 1,
       "medium_priority_queue" ->  1, 
       "low_priority_queue" -> 1
  )
  val streamsMap = connector.createMessageStreams(topicWithStreamCount)

您将获得每个主题的信息流。现在,如果主题没有任何消息,则可以先阅读high_priority主题,然后回退到medium_priority_queue主题。如果medium_priority_queue为空,则读取low_priority队列。
这个技巧对我来说很好用,可能对您有帮助!!

关于apache-kafka - Kafka是否支持主题或消息的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655361/

相关文章:

java - 使用 Stream DSL 在 Kafka Streams 中指定每个流/表时间戳提取器

javascript - Kafka-node 连接到 kafka 的本地实例,但未连接到远程 kafka 服务器

java - 如何确保消息到达Kafka Broker?

apache-kafka - kafka 在 Zookeeper 上存储元数据的位置? (哪条路?)

apache-kafka - Kafka - 主题 & 分区 & 消费者

apache-kafka - Kafka如何保证消费者不会两次阅读一条消息?

java - 无法实例化 Kafka 结构化流 KafkaSourceProvider

hadoop - 大数据摄取 - Flafka 用例

apache-kafka - Kafkacat:如何删除主题或其所有消息?

go - Confluent Kafka Golang 客户端生产者 "Broker: Not enough in-sync replicas"