2017-04-12 8 views
1

4 개의 파티션이있는 항목에 메시지를 보내려고합니다. 그리고 DefaultPartitioner에 의해 결정된대로 메시지를 보내려고합니다.DefaultPartitioner를 Spring-kafka kafkaTemplate의 sendDefault 메소드와 함께 사용하는 방법

kafkaTemplate.sendDefault(DefaultPartitioner(job.getId()),job.getId(),job); kafkaTemplate이 DefaultPartitioner를 사용하여 파티션 번호를 얻는 방법을 잘 모르겠습니다.

누군가 나를 도와주세요.

답변

0

JavaDocs부터 시작하자! 당신이 DefaultPartitioner에 의존 할 것인지


/** 
* Send the data to the default topic with the provided key and no partition. 
* @param key the key. 
* @param data The data. 
* @return a Future for the {@link SendResult}. 
*/ 
ListenableFuture<SendResult<K, V>> sendDefault(K key, V data); 

/** 
* The default partitioning strategy: 
* <ul> 
* <li>If a partition is specified in the record, use it 
* <li>If no partition is specified but a key is present choose a partition based on a hash of the key 
* <li>If no partition or key is present choose a partition in a round-robin fashion 
*/ 
public class DefaultPartitioner implements Partitioner { 

그래서, 당신이 필요로하는 모든 레코드에 대한 key입니다. 따라서 해당 특정 KafkaTemplate 방법을 사용하십시오.

kafkaTemplate.sendDefault(job.getId(),job); 
+0

감사합니다! 그게 효과가 있었어. 내가 파티션을 확인하기 위해 사용했던 카프카 도구에 문제가 있었어. 나는 카프카 콘솔 소비자를 대신 사용 했었고 예상되는 파티션에서 메시지를 볼 수있었습니다. –

+0

좋아요! 이제 이것을 생각해보십시오 : http://stackoverflow.com/help/someone-answers –