我看到下面的注释是为春云流贬值
< code > @ Input < code > @ Output < code > @ enable binding < code > @ StreamListener
请提供示例和文档链接,说明如何以功能方式进行操作。
以下是一些更有帮助的信息:
发送消息
使用org.springframework.cloud.stream.function。用于发送消息的StreamBridge。
以前
myDataSource.output().send(message);
之后
streamBridge.send("myData-out-0", message);
替换ServiceActivator
以前
@ServiceActivator(inputChannel = MyProcessor.INPUT, outputChannel = MyProcessor.OUTPUT)
public Message<MySuperOutputMessage> transform(Message<MySuperInputMessage> message) { ... }
之后
@Bean
Function<Message<MySuperInputMessage>, Message<MySuperOutputMessage>> myCoolFunction() {
return message -> {...};
}
不要忘记在属性spring.cloud.function.definition中注册“myCoolFunction”。
这个github存储库包含了很多例子。
https://github.com/spring-cloud/stream-applications
官方留档详细解释了如何从命令式到功能式在Spring云流应用程序与kafka流,但没有它是一样的。
https://docs.spring.io/spring-cloud-stream/docs/3.1.0/reference/html/spring-cloud-stream.html#spring_cloud_function
也请查看此帖子..
https://spring.io/blog/2019/10/14/spring-cloud-stream-demystified-and-simplified
https://docs.spring.io/spring-cloud-stream-binder-kafka/docs/3.1.0/reference/html/spring-cloud-stream-binder-kafka.html#_programming_model
有一个命令式代码的示例(https://docs.spring.io/spring-cloud-stream-binder-kafka/docs/3.1.0/reference/html/spring-cloud-stream-binder-kafka.html#_imperative_programming_model)以及如何以功能风格开发。
Spring现在使用检测到的消费者/功能/供应商bean来为您定义流,而不是使用基于注释的配置。旧版本带有注释的代码如下所示:
interface InputChannels {
@Input("input")
SubscribableChannel input();
}
@EnableBinding(InputChannels.class)
public class PubSubDemo {
@StreamListener("input")
public void listen() {
if (LOG.isInfoEnabled()) {
LOG.info(context.toString());
}
}
新版本代码将类似于:
public class PubSubDemo {
@Bean
Consumer<String> input() {
return str -> {
if (LOG.isInfoEnabled()) {
LOG.info(context.toString());
}
};
}
}
检查消费者 bean 替换了@StreamListener和@Input。
关于配置,如果之前为了配置你有一个application.yml看起来像这样:
spring:
cloud:
stream:
bindings:
input:
destination: destination
group: group
consumer:
concurrency: 10
max-attempts: 3
现在新的配置将是这样的
spring:
cloud:
stream:
bindings:
input-in-0:
destination: destination
group: group
consumer:
concurrency: 10
max-attempts: 3
可选:Spring 云流库自行创建 bean。如果未创建 Bean。使用以下属性。
spring:
cloud:
stream:
function:
definition: input
输入和输出对应于绑定的类型(例如输入或输出)。索引是输入或输出绑定的索引。对于典型的单输入/输出功能,它始终为0。
现在让我们考虑输出通道:
public interface OutputChannels {
@Output
MessageChannel output();
}
@Service
@EnableBinding(OutputChannels.class)
class PubSubSendQueue {
OutputChannels outputChannel;
public void publish() {
outputChannel.output().send("Hello");
}
}
现在使用函数代码将作为:
@Service
class PubSubSendQueue {
@Bean
public Supplier<String> output(){
return Supplier { "Adam" }
}
}
在application.properties文件中添加以下内容
spring.cloud.stream.bindings.output-out-0.destination=destination
函数式编程 函数式编程是种编程范式,它需要我们将函数作为参数传递,或者作为返回值返还。我们可以通过组合不同的函数来得到想要的结果。 我们来看一下这几个例子: // 全校学生 let allStudents: [Student] = getSchoolStudents() // 三年二班的学生 let gradeThreeClassTwoStudents: [Student] = allStude
自3.1版以来,用于处理队列的主要API已被弃用。课堂评论中写道: 从3.1开始就不推荐使用函数式编程模型 我在网上搜索了很多解决方案,但没有找到关于如何迁移的可靠的E2E解释。 正在寻找以下方面的示例: 从队列读取 如果有几种方法可以做到这一点(正如我在网上看到的),我很乐意为每个选项提供解释和典型用例。
问题内容: 在群集的完整Java EE应用程序中,DTO模式仍然是有效的选择吗?有问题的应用程序使用EJB Hibernate和Struts以及Spring等。在这种情况下传输域对象有什么问题吗? 编辑:只是为了澄清我的问题,随着现代资源和Java EE的改进,是否有理由不仅仅使用域对象?如果没有,那么DTO模式是否会逐渐消失并且不应该在新的应用程序中使用? 问题答案: 不被弃用。是否应使用DTO
我想知道Gradle/Google在这方面的方向是什么,因为目前不可能规划一个适当的开发计划。 版本0.7+:他们建议仍然使用ndk-build/ant版本0.8+:他们已经引入了最小的NDK支持版本1.0.0:看起来NDK支持将成为正式版本1.0.2:现在看来NDK支持不推荐使用了。 我的问题是: > 每个人都恢复到ndk-build和手工制作的Android.mk文件了吗? “将来会提供另一种
我们起初将Functional一词译作泛型,想要表达该类模型能够表达任意张量映射的含义,但表达的不是很精确,在Keras 2里我们将这个词改译为“函数式”,对函数式编程有所了解的同学应能够快速get到该类模型想要表达的含义。函数式模型称作Functional,但它的类名是Model,因此我们有时候也用Model来代表函数式模型。 Keras函数式模型接口是用户定义多输出模型、非循环有向模型或具有共
问题内容: 我正在使用Spring Data Commons v2 +快照,并且看到a的构造函数已被弃用。这似乎发生在M1和M2之间。不幸的是,这是该接口的唯一[真实]实现。我想知道努力的方向,对于当前的开发有什么更好的选择。 问题答案: 只是已弃用的构造函数。代替 您现在可以使用 就是这样。