【问题标题】:Handle multiple responses with ReplyingKafkaTemplate使用 ReplyingKafkaTemplate 处理多个响应
【发布时间】:2019-08-05 17:01:07
【问题描述】:

我正在尝试实现一种回复响应模式,在该模式中,我将消息发布到多个消费者组收听的主题。这意味着他们都会收到消息并在回复主题中提交回复。

问题是因为他们都回复同一个消息,所以只有回复主题中第一个收到的消息才会被回复。其他的将被丢弃。 鉴于我知道我应该在回复主题上获得多少回复(调用该号码-n),我怎样才能让 ReplyingKafkaTemplate 等待 n 回复然后解决答案? 我尝试从Spring Kafka documentation 推断,但无法完全弄清楚。 谢谢。

【问题讨论】:

    标签: apache-kafka spring-kafka


    【解决方案1】:

    该模板严格用于单个请求/回复处理。

    您不能将它用于您的用例。

    使用KafkaTemplate 和单独的侦听器;您必须自己关联回复。

    【讨论】:

    • 还可以考虑研究 Spring Integration 及其 Scatter-Gather 实现:docs.spring.io/spring-integration/docs/current/reference/html/…
    • 扩展 ReplyingKafkaTemplate 以实现 onMessage 和 sendAndReceive 来处理 Map> 而不是 Map 是否是一种合理的方法?
    • 是的,这将是一个合理的方法;但您可能不需要更改发送方法;只需将您的R 泛型类型设为Collection<Foo>。但我只是在看它,它可能需要一些重构以使其更容易子类化;你可能最终不得不从 onMessage 复制一堆代码。当然,它只有在您知道预期有多少回复时才有效,除非您实施超时以返回部分结果。如果您认为社区可能对它感兴趣,请随时将其贡献回框架。
    • 感谢您的指点。我想我可能不得不复制整个类,因为 onMessage 访问私有未来类。 PS:我应该在github上继续这个讨论吗?
    • 是的,这就是我所说的重构,让子类化变得更容易。是的;请移至 GitHub..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多