以编程方式设置分区键

时间:2018-03-13 08:18:33

标签: spring spring-cloud spring-cloud-stream

如何以编程方式将partition-key设置为我发送的每个类的实例?

例如,如果我发送Person个实例,那么我想将partition-key设置为person.getId()

class Person {
    String id;

    public Person(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id='" + id + '\'' +
                '}';
    }
}

@EnableBinding(Source.class)
public class SpringCloudStreamKinesisProducerApplication {

    @InboundChannelAdapter(Source.OUTPUT)
    public Person source() {
        return new Person("my-id-123");
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用以下属性设置分区键: spring.cloud.stream.bindings.output.producer.partitionKeyExpression=payload.id

这将确保您生成的任何Person实例将被发送到目标上的相应分区。