我可以将 Kafka 与 Apache Camel 一起使用来替代 ActiveMQ 吗?
Can I use Kafka with Apache Camel as a replacement of ActiveMQ?
我有一个使用 Spring Boot 构建的 Camel 应用程序。此应用程序使用 ActiveMQ 在两个系统之间传递消息。现在我需要添加根据配置在 ActiveMQ 和 Apache Kakfa 之间选择作为消息代理的能力。
这是可以做到的吗?我对 Kafka 的了解为零,但就我正在阅读的内容而言,它的工作方式与 ActiveMQ 不同。
假设我的 Camel 应用程序像这样向队列发布消息:
from("direct:inbound")
//random stuff happening
.to(ExchangePattern.InOnly, "jms:queue:custom-queue")
我的 application.yml 这个配置
spring:
activemq:
packages:
trusted:
- java.util
- java.lang
broker-url: tcp://localhost:61616
我可以只用 Kafka 特定的配置替换 activemq 配置并期望它会神奇地工作吗?至少这是我的 PM 所期望的。
Spring Cloud 这样做。只需添加特定的活页夹即可使用各种消息系统。
起点是为 ActiveMQ 和 Kafka 创建“适配器路由”,并根据现有配置有条件地创建它们。
这些适配器路由必须处理所有消息系统特定的东西以便“主要路由”不需要关心这些(即hexagon architecture)。
- 您的核心逻辑在使用
direct
个端点的“主要路线”中
- 有一个ActiveMQ消费者转发到主路由
- 有一个Kafka消费者转发到主路由
- 有一个 ActiveMQ 生产者生成从主要路由接收的消息
- 有一个 Kafka 生产者生产从主要路由接收到的消息
- 主要路由向活动生产者发送消息,例如使用Recepient List EIP
但是,ActiveMQ和Kafka有很大的不同。如果你真的想走这条路,它可能会变得非常颠簸:-)
我有一个使用 Spring Boot 构建的 Camel 应用程序。此应用程序使用 ActiveMQ 在两个系统之间传递消息。现在我需要添加根据配置在 ActiveMQ 和 Apache Kakfa 之间选择作为消息代理的能力。
这是可以做到的吗?我对 Kafka 的了解为零,但就我正在阅读的内容而言,它的工作方式与 ActiveMQ 不同。
假设我的 Camel 应用程序像这样向队列发布消息:
from("direct:inbound")
//random stuff happening
.to(ExchangePattern.InOnly, "jms:queue:custom-queue")
我的 application.yml 这个配置
spring:
activemq:
packages:
trusted:
- java.util
- java.lang
broker-url: tcp://localhost:61616
我可以只用 Kafka 特定的配置替换 activemq 配置并期望它会神奇地工作吗?至少这是我的 PM 所期望的。
Spring Cloud 这样做。只需添加特定的活页夹即可使用各种消息系统。
起点是为 ActiveMQ 和 Kafka 创建“适配器路由”,并根据现有配置有条件地创建它们。
这些适配器路由必须处理所有消息系统特定的东西以便“主要路由”不需要关心这些(即hexagon architecture)。
- 您的核心逻辑在使用
direct
个端点的“主要路线”中 - 有一个ActiveMQ消费者转发到主路由
- 有一个Kafka消费者转发到主路由
- 有一个 ActiveMQ 生产者生成从主要路由接收的消息
- 有一个 Kafka 生产者生产从主要路由接收到的消息
- 主要路由向活动生产者发送消息,例如使用Recepient List EIP
但是,ActiveMQ和Kafka有很大的不同。如果你真的想走这条路,它可能会变得非常颠簸:-)