当前位置: 首页 > 知识库问答 >
问题:

如何使用两个不同的输入主题启用函数路由

昝阳嘉
2023-03-14

我正在将一个应用程序迁移到SpringCloudStream的新的基于功能的编程模型中,但阻止了事件路由。

我必须路由来自两个不同kafka主题的事件,我不知道如何将functionRouter-in-0绑定到两个不同的目的地。

路由可以通过添加spring.cloud.function来完成。definition</code>头到生产者端的每个消息。

假设我有

  • 我的服务中有4个消费者功能:consumerA、consumerB、consumerC、consumerD
  • 2个kafka主题:<ul>
  • topic1,其中包含带有spring.cloud.function的消息。具有值consumerA或consumerB的定义标头
  • topic2,其消息头的值为consumerC或consumerD

我如何在配置中表达RoutingFunction.FUNCTION_NAME应该听Topic1和Topic2?

spring:
  cloud:
    function.definition: consumerA;consumerB;consumerC;consumerD
    stream:
      function.routing.enabled: true
      bindings:
        functionRouter-in-0:
          destination: topic1
          group: myService
          consumer:
            concurrency: 1
            partitioned: false
            maxAttempts: 1
        functionRouter-in-0:   # <== this oviously does not work because it's already defined above
          destination: topic2
          group: myService
          consumer:
            concurrency: 3
            maxAttempts: 1

注意:我的版本是3.0.11.RELEASE


共有1个答案

燕星鹏
2023-03-14

关于绑定,基于注释的模型没有任何变化,正如这里所解释的那样 - “如果绑定表示消费者绑定(输入),它可以绑定到多个目标,并且目标名称可以指定为逗号分隔的字符串值。 所以。。。.

. . .
functionRouter-in-0:
          destination: topic1, topic2
          group: myService
. . .

我认为剩下的部分在这里进行了解释,其中讨论了路由到和从,以及可以使用的不同机制,例如应用程序属性、消息头等。

此外,对于出站也有几个选项。一个是StreamBridge和… sendto…标头。

请随时跟进。

 类似资料:
  • 问题是编写一个对三个整数进行排序的程序。整数从输入对话框中输入,并分别存储在变量num1、num2和num3中。程序对数字进行排序,使num1 实际上我是这样做的,但结果只能用于1、2和3个数字! 当我输入任何不同的数字时,它不会显示我想要的结果! 这是我的代码。。

  • 我有一个Kafka的话题,我正在听。然后将消息内容写入websocket通道,在该通道中我有一个订阅了该通道的SockJS客户机。这很管用。然后我创建了一个新的主题,然后添加了第二个KafKalistener。但是,当调用secong侦听器时,我看到它正在尝试处理/读取与第一个KafkaListener和主题相对应的有效负载,由于它没有被配置为这样做,因此会引发一个MessageConversio

  • 我正在创建一个显示员工姓名和薪资的程序。名称和工资是由用户输入的,我想做两个雇员,即两个实例。如何从用户获得两个独立的输入? 公共类员工{

  • 用例是:我有一个kafka流应用程序,它使用一个输入主题,输出到一个中间主题,然后在同一个流中使用这个中间主题的另一个拓扑。 每当应用程序id被更新时,两个主题都从最早开始向消费者传递。我想将中间主题的auto.offset.reset改为latest,同时将输入主题的auto . offset . reset改为earliest。

  • 我有一个websocket服务器和一个websocket客户端,都是Java的。websocket服务器具有以下功能: 在 Java 网页滑板客户端中,我在我的踩踏会话处理程序中提供了以下内容: 然后,我能够通过客户端向服务器路径“hello”发送消息来在两者之间进行通信,然后由于客户端订阅了“topic/greetings”,所以我也要用我的stompFrameHandler来处理响应。 但是我

  • 我想为同一个GET路径提供多个函数。 我也希望我的网络服务“找到”这些函数,当且仅当查询参数与URL字符串中的参数匹配时。 例如: 我有 对于该路径,我希望有2个功能: 和 现在我得到一个错误: 严重:在资源和/或提供程序类中检测到以下错误和警告:严重:产生媒体类型冲突。资源方法public javax . ws . RS . core . response 所以首先:有什么方法可以实现我在这里想