![](/img/trans.png)
[英]Create multiple partitions in kafka topic and publish message to all of them using kafka-node
[英]How to send data to multiple Kafka topic partitions in Node JS
在Node js應用程序中,當我嘗試將消息發送到Kafka主題時,所有主題都將移至Partition0。該主題創建了4個分區,並且希望以循環機制進行發布,因此我嘗試了多個選項,但沒有運氣。
有什么辦法解決這個問題? 下面是代碼片段。
payloads = [
{ topic: 'test-topic', messages: ['TestMessage1', 'TestMessage2', 'TestMessage3', 'TestMessage4']},
];
producer.on('ready', function(){
producer.send(payloads, function(err, data){
console.log("Successfully written onto Kafka");
});
在Kafka中,具有相同密鑰的消息被放置在同一分區中。 您可以手動定義分區:
// Force partitioning - default partition is 0
payloads = [
{ topic: 'test-topic', messages: ['TestMessage1'], partition: 0 },
{ topic: 'test-topic', messages: ['TestMessage2'], partition: 1 },
{ topic: 'test-topic', messages: ['TestMessage3'], partition: 2 },
{ topic: 'test-topic', messages: ['TestMessage4'], partition: 3 }
];
或為每個消息使用不同的密鑰:
payloads = [
{ topic: 'test-topic', messages: ['TestMessage1'], key: '1' },
{ topic: 'test-topic', messages: ['TestMessage2'], key: '2' },
{ topic: 'test-topic', messages: ['TestMessage3'], key: '3' },
{ topic: 'test-topic', messages: ['TestMessage4'], key: '4' }
];
// Alternatively, you can use KeyedMessage
km = new KeyedMessage('1', 'TestMessage1'),
km2 = new KeyedMessage('2', 'TestMessage2'),
payloads = [
{ topic: 'test-topic', messages: [ km , km2 ] },
];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.