如何通过将kafka作为传输层来扩展命名通道

时间:2015-11-09 14:33:09

标签: spring-xd

我使用Spring XD 1.2.1和kafka作为传输层。我有以下设置:

XD:   交通:卡夫卡   messagebus:     卡夫卡:       默认:         并发:10         minPartitionCount:10

我有以下流作为示例:

stream create f --definition "queue:foo > transform --expression=payload+'-foo' | log" 
stream create b --definition "queue:bar > transform --expression=payload+'-bar' | log"
stream deploy --name f --properties "module.transform.count=2"
stream deploy --name b --properties "module.transform.count=2"
stream create r --definition "time | router --expression=payload.contains('10')?'queue:foo':'queue:bar'" --deploy

问题

如何扩展“源”是命名通道的流中的第一个处理器?我期待流f和b的变换器中有20个分区,只要计数为2,并发度为10.但是分区数是10。

当您部署非第一个模块时,这可以正常工作。

我应该以特定的方式配置命名频道吗?

感谢。

1 个答案:

答案 0 :(得分:0)

kafka分区由生产方控制。

对于中流频道,我们可以查看" next"模块并通过计算其需求来计算分区数(concurrency*count)。

使用命名通道,我们无法知道消费者的数量(或它们的并发性),因此使用了1的计数和并发性,因此minPartitionCount用作分区计数。

您需要使用适当的设置部署生成流以增加分区:

stream deploy foo --properties module.last.producer.minPartitionCount=20

修改

实际上 - 看起来我们有一个错误 - 您无法在指定频道上指定minPartitionCount

我看到你打开了JIRA Issue