我正在探索一个事实,即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/