Java - 是否可以将 Spring Cloud Stream Kafka 和 RabbitMQ 用于同一应用程序

Java - Is it Possible to Use Spring Cloud Stream Kafka and RabbitMQ for the Same Application

我们有一个应用程序已经在使用 Spring Cloud Stream 和 RabbitMQ,该应用程序的一些端点正在向 Rabbit MQ 发送消息。现在我们希望新端点开始向 Kafka 发送消息,希望现有端点继续使用 RabbitMQ 和 Spring Cloud Stream。我不确定这是否可能,因为这意味着我们必须在 pom.xml 中包含 kafka 和 rabbit binder 依赖项。我们需要在 yml 文件中进行哪些配置更改,以便应用程序了解哪些绑定适用于 kafka 哪些绑定适用于 Rabbit?非常感谢。

是的,这是可能的。这就是我们所说的 multi-binder 场景,是专门用于支持您所描述的用例的核心功能之一。 您可以在此处找到更多信息 - https://docs.spring.io/spring-cloud-stream/docs/3.2.1/reference/html/spring-cloud-stream.html#multiple-binders 此外,这是一个实际提供使用 Kafka 和 Rabbit 的配置的示例。虽然示例以 CloudEvent 为中心,但您可以忽略它并严格专注于与 Rabbit 和 Kafka 绑定器相关的配置 - https://github.com/spring-cloud/spring-cloud-function/tree/main/spring-cloud-function-samples/function-sample-cloudevent-stream

一旦您熟悉了,请随时提出后续问题。