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

如何编写一个基于自定义逻辑将数据生成到不同绑定的函数

狄兴邦
2023-03-14

常规的Spring-Cloud-Stream函数如下所示(摘自文档):

@Bean
public Function<String, String> toUpperCase() {
    return s -> s.toUpperCase();
}

考虑到不使用反应式方法,我想知道是否可以基于自定义逻辑进行不同的转换和/或将结果发送到不同的“输出”绑定?类似这样:

@Bean
public Function<String, String> transform() {
    return s -> {
      if (s.equals("A")) {
        return s.toUpperCase();       //this wants to be sent to toUpperCase-out-0
      } else if (s.equals("B")) {
        return s.toLowerCase();       //this wants to be sent to toLowerCase-out-0
      } else {
        return "unsupported";         //this wants to be sent to unsupported-out-0
      }
    };
}

此外,这里我们有相同的返回类型(字符串),但可能需要从每个分支返回不同类的对象(通过使用对象作为整个函数的返回类型)。

我可以用消费者而不是函数想象一个解决方案,在其中我们进行不同的StreamBridge调用,但也许可以用函数做同样的事情?

共有1个答案

陆伟
2023-03-14

不要使用功能,而是使用消费者,并使用流桥发送输出。

https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#_sending_arbitrary_data_to_an_output_e_g_foreign_event_driven_sources

 类似资料:
  • 当我试图使用数据绑定和绑定布局中的自定义XML标记运行项目时,遇到以下描述的构建错误:

  • 我正在使用 Scala,并希望构建自己的数据帧函数。例如,我想将一列视为数组,循环访问每个元素并进行计算。 首先,我尝试实现自己的getMax方法。因此列x的值为[3,8,2,5,9],该方法的预期输出为9。 下面是它在Scala中的样子 这是我目前所知道的,并得到这个错误 我不知道如何迭代该列。 } 一旦我能够实现自己的方法,我将创建一个列函数 然后我希望能够在SQL的陈述中使用它 给定输入列[

  • 我有一个自定义文件,其中包含我所有图像的路径及其标签,我在一个数据框中加载使用: MyIndex有两列感兴趣的ImagePath和ClassName 接下来我做一些训练测试拆分和编码输出标签为: 我面临的问题是一次性加载的数据太大,无法放入当前的机器内存,因此我无法处理完整的数据集。 我曾尝试使用datagenerator,但不想遵循它遵循的目录约定,也无法消除增强部分。 问题是,是否有一种方法可

  • 自定义绑定(Custom Binding)允许我们通过代码实现自定义绑定规则,从而完成更高级的业务需求。 示例代码 //.js片段 justep.Bind.bindingHandlers.yourBindingName = { init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {

  • 我正在连接Azure SQL数据库,下一个任务是在连接失败时创建自定义重试逻辑。我希望重试逻辑在启动时(如果需要)以及应用程序运行时出现连接故障时都能运行。我做了一个测试,从我的应用程序中删除了IP限制,然后导致我的应用程序出现异常(例外)。我想处理引发异常的时间,以便触发一个作业,验证应用程序和服务器是否正确配置。我正在寻找一个解决方案,在那里我可以处理这些异常并重试DB事务? 数据源配置 应用

  • 我正在尝试为PGInterval和Duration编写一个自定义数据类型绑定,以将jOOQ与TimescaleDB一起使用。遗憾的是,jOOQ在为数据库例程生成函数时没有使用它。 这是我的绑定类: 这是我在pom中的配置: 例如,我希望jOOQ生成例程 像 但是我得到了