用于阅读主题中的所有分区:
~bin / kafka-console-consumer.sh --zookeeper localhost:2181 - topic myTopic --from-beginning
答案 0 :(得分:2)
您无法使用控制台消费者和制作人。但是您可以使用更高级别的客户端(使用适合您的任何语言)。
@model FamilyTree.Models.FamilyRelationship
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>FamilyRelationship</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.familyMemberPrimary, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(a => a.familyMemberPrimary, (SelectList)ViewBag.familyMember, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.familyMemberPrimary, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.familyMemberSecondary, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(a => a.familyMemberSecondary, (SelectList)ViewBag.familyMember, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.familyMemberSecondary, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.relationshipType, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(a => a.relationshipType, (SelectList)ViewBag.relationship, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.relationshipType, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
方法手动分配要使用的特定主题分区(https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java#L906)assign
覆盖分区逻辑,您可以手动决定如何对邮件进行分区(https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/ProducerConfig.java#L206-L208)答案 1 :(得分:1)
有了许多可用的客户端,您可以像serejja所说的那样指定分区号。
另请查看使用actor的https://github.com/cakesolutions/scala-kafka-client,并为手动分区和偏移提供多种模式。
如果你想在终端上做同样的事情,我建议使用kafkacat。 (https://github.com/edenhill/kafkacat) 我个人在开发过程中的选择。
您可以执行
之类的操作 kafkacat -b localhost:9092 -f 'Topic %t[%p], offset::: %o, data: %s key: %k\n' -t testtopic
对于特定分区,您只需使用-p
标志。
答案 2 :(得分:0)
控制台生产者和消费者没有提供这种灵活性。您可以通过Kafka API来实现。
您可以使用assign()操作KafkaConsumer/Assign手动将分区分配给使用者。这将禁用组重新平衡。请非常小心地使用它。
您可以在KafkaProducer消息中指定分区详细信息。如果未指定,则按照分区程序策略进行存储。
答案 3 :(得分:0)
如何使用主题的特定分区? (例如 使用分区键13)
--partition
中有一个名为kafka-console-consumer
的标志
--partition <Integer: partition> The partition to consume from.
Consumption starts from the end of
the partition unless '--offset' is
specified.
命令如下:
bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic test --partition 0 --from-beginning