[英]spring cloud stream supplier and consumer not triggered
我正在使用 spring 雲 stream 的函數式編程 model 來聲明供應商和消費者。
我需要我的發布者每秒被觸發一次,然后消息由處理器處理,最后由消費者使用。 但這些功能永遠不會被觸發。 是否缺少任何配置?
這是我的代碼:-
spring 引導 App Main class
import java.util.Date;
import java.util.Properties;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Example1 {
public static void main(String[] args) {
Properties properties = new Properties();
properties.put("spring.cloud.stream.bindings.myPublisher-out-0.destination", "myProcessor-in");
properties.put("spring.cloud.stream.bindings.myProcessor-in-0.destination", "myProcessor-in");
properties.put("spring.cloud.stream.bindings.myProcessor-out-0.destination", "myProcessor-out");
properties.put("spring.cloud.stream.bindings.mySubscriber-in-0.destination", "myProcessor-out");
SpringApplication app = new SpringApplication(Example1.class);
app.setDefaultProperties(properties);
app.run(args);
}
@Bean
public Supplier<String> myPublisher() {
return () -> new Date().toString();
}
@Bean
public Function<String, String> myProcessor() {
return s -> "ML PROCESSED: " + s;
}
@Bean
public Consumer<String> mySubscriber() {
return s -> System.out.println("ML RECEIVED: " + s);
}
}
pom.xml 文件
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.javaworld</groupId>
<artifactId>code-snippet</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<spring-cloud.version>2021.0.2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<!--
<scope>test</scope>
-->
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- C3P0 connection pool dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.1</version>
</dependency>
<!-- Hikari connection pool dependencies -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- actuators support -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
</dependency>
<!-- ################################ JMS using activemq support ######################################## -->
<!-- -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- needed when running JMS without any framework..specifically the
examples in this package spring_boot._4_jms.no_framework -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-kahadb-store</artifactId>
<scope>runtime</scope>
</dependency>
<!-- the above spring-boot-starter-activemq replaces all these following dependencies -->
<!--
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
</dependency>
-->
<!-- ################################ AMQP support ######################################## -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- ################################ Wiremock support #################################### -->
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock-jre8</artifactId>
<version>2.32.0</version>
<scope>test</scope>
</dependency>
<!-- ################################ Spring cloud stream ###################################### -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
</dependencies>
<!-- for spring cloud stream support -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
您應該為spring-cloud-stream
定義您的Function
、 Supplier
和Consumer
,如下所示。
properties.put("spring.cloud.stream.function.definition", "myPublisher;myProcessor;mySubscriber");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.