我有一个关于使用 Apache Kafka 的问题,详情如下。
我构建了一个服务的 3 个实例,它们有自己的本地缓存,称为 S1、S2、S3。例如,当更新请求到达 S1 时,S1 将更新自己的本地缓存,然后将作业推送到 Kafka 以更新 S2、S3 的本地缓存。在这种情况下,我只想让 S2、S3 得到这份工作,但实际上,当我使用 Kafka 进行发布/订阅时,所有 S1、S2、S3 都会得到这份工作。
那么我该如何处理这个问题,任何建议都会有所帮助。
我有一个关于使用 Apache Kafka 的问题,详情如下。
我构建了一个服务的 3 个实例,它们有自己的本地缓存,称为 S1、S2、S3。例如,当更新请求到达 S1 时,S1 将更新自己的本地缓存,然后将作业推送到 Kafka 以更新 S2、S3 的本地缓存。在这种情况下,我只想让 S2、S3 得到这份工作,但实际上,当我使用 Kafka 进行发布/订阅时,所有 S1、S2、S3 都会得到这份工作。
那么我该如何处理这个问题,任何建议都会有所帮助。
我看到 3 个选项:
注意:key 用于分区器-key/round robin 的 hashCode(取决于 kafka 版本),因此行为可以改变。
包装您的 kafka 消息并将元信息添加到包装器。例如,如果您使用 json:
{
"instanceName":"S1",
"request":{...}
}