spring-boot - 将 Spring Cloud Stream 转换为使用响应式云功能
问题描述
目前我有类似这样的 Spring Boot 应用程序。
@Component
@EnableBinding(Source::class)
class EmailMessageProducer(private val source: Source) {
suspend fun send(textMessage: TextMessage) {
source.output().send(
MessageBuilder.withPayload(textMessage).setHeader("service", "test").build()
)
}
}
我想在这里使用反应模式使用 Spring Cloud Function。
此外,我当前的解决方案是非阻塞的吗?我问这个是因为这是我第一次在这种情况下使用 Kotlin 协程。
Java 解决方案也适用于我,因为我只是想理解这里的概念。
解决方案
您正在寻找的是响应式供应商(例如,Supplier<Flux>
)。
在您的情况下,它看起来像这样:
@SpringBootApplication
public class SomeApplication {
@Bean
public Supplier<Flux<Message<String>>> messageProducer() {
return () -> Flux.just(MessageBuilder.withPayload(textMessage).setHeader("service", "test").build());
}
}
提供spring.cloud.function.definition=messageProducer
财产,这就是它。
显然,上面的示例生成了一个包含单个项目的有限流,但可以随意修改返回的通量。事实上,我们在这里更详细地讨论这个问题。
推荐阅读
- javascript - 如何使用 JavaScript 获取小数点后 2 位的 ceil 值
- sql-server - 查询 SQL Server 表中的 XML 字段
- android - 为什么 EditText 会显示用户输入但不保留该用户输入?
- html - 我想尝试做4条彼此相对的线,但是长度似乎不一样,倾斜角度也一样
- vba - 组合框查询以显示所有记录
- javascript - 如何在 reactjs 中使用 bulma carousel?
- unit-testing - 如何在我的 go 测试中实施伪造者?
- linux - env 输出中缺少 HOSTNAME
- python - 特征选择或特征工程:问题
- php - 在 PHP 中的 JSONObject 内创建 JSONArray