我可以使用Kafka和Apache Camel来代替ActiveMQ吗?

d5vmydt9  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(209)

我有一个用Sping 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所期望的。

ny6fqffe

ny6fqffe1#

Spring Cloud就可以做到这一点。只需添加特定的绑定器,就可以使用各种消息传递系统。
一个起点是为ActiveMQ和Kafka创建“适配器路由”,并根据现有配置有条件地创建它们。
这些适配器路由必须处理所有消息传递系统特定的东西,以便“主路由”不需要关心这些(即hexagon architecture)。

  • 您的核心逻辑位于使用direct端点的“主路由”中
  • 有一个ActiveMQ使用方转发到主路由
  • 有一个Kafka的消费者,转发到主要路线
  • 有一个ActiveMQ生成器,用于生成从主路由接收的消息
  • 有一个Kafka的生产者,生产从主要路线收到的信息
  • 主路由将消息发送到活动生成器,例如,通过使用Recepient List EIP

然而,ActiveMQ和Kafka是非常不同的。如果你真的想走这条路,它可能会变得非常颠簸:-)

相关问题