我使用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。
当您部署非第一个模块时,这可以正常工作。
我应该以特定的方式配置命名频道吗?
感谢。
答案 0 :(得分:0)
kafka分区由生产方控制。
对于中流频道,我们可以查看" next"模块并通过计算其需求来计算分区数(concurrency*count
)。
使用命名通道,我们无法知道消费者的数量(或它们的并发性),因此使用了1的计数和并发性,因此minPartitionCount
用作分区计数。
您需要使用适当的设置部署生成流以增加分区:
stream deploy foo --properties module.last.producer.minPartitionCount=20
修改强>
实际上 - 看起来我们有一个错误 - 您无法在指定频道上指定minPartitionCount
。
我看到你打开了JIRA Issue。