Skip to content
This repository was archived by the owner on Mar 13, 2021. It is now read-only.

Commit 9a56d42

Browse files
author
Dave Syer
committed
Add stream binder for file I/O
Works with target/stream/{input/output} by default, so create those pipes first to see it working properly (otherwise the app just creates regular files).
1 parent 92757a1 commit 9a56d42

File tree

4 files changed

+30
-7
lines changed

4 files changed

+30
-7
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ VOLUME /tmp
33
COPY target/dependency/BOOT-INF/lib /app/lib
44
COPY target/dependency/META-INF /app/META-INF
55
COPY target/dependency/BOOT-INF/classes /app
6+
ENV SPRING_CLOUD_STREAM_BINDER_FILE_PREFIX /pipes
67
ENTRYPOINT ["java","-Xmx128m","-Djava.security.egd=file:/dev/./urandom","-XX:TieredStopAtLevel=1","-noverify","-cp","app:app/lib/*","io.projectriff.invoker.JavaFunctionInvokerApplication"]

pom.xml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2020
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2121
<java.version>1.8</java.version>
22-
<spring-cloud.version>Dalston.SR4</spring-cloud.version>
23-
<spring-cloud-function.version>1.0.0.M2</spring-cloud-function.version>
22+
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
23+
<spring-cloud-function.version>1.0.0.BUILD-SNAPSHOT</spring-cloud-function.version>
24+
<spring-cloud-stream-file.version>1.0.0.M1</spring-cloud-stream-file.version>
2425
<spring-cloud-deployer.version>1.2.0.RELEASE</spring-cloud-deployer.version>
25-
<reactor.version>3.0.7.RELEASE</reactor.version>
26+
<reactor.version>3.1.1.RELEASE</reactor.version>
2627
<dockerfile-maven.version>1.3.6</dockerfile-maven.version>
2728
<docker.org>projectriff</docker.org>
2829
</properties>
@@ -32,6 +33,21 @@
3233
<groupId>org.springframework.cloud</groupId>
3334
<artifactId>spring-cloud-function-web</artifactId>
3435
</dependency>
36+
<dependency>
37+
<groupId>org.springframework.cloud</groupId>
38+
<artifactId>spring-cloud-function-stream</artifactId>
39+
<exclusions>
40+
<exclusion>
41+
<groupId>org.springframework.boot</groupId>
42+
<artifactId>spring-boot-starter-actuator</artifactId>
43+
</exclusion>
44+
</exclusions>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.springframework.cloud</groupId>
48+
<artifactId>spring-cloud-stream-binder-file</artifactId>
49+
<version>${spring-cloud-stream-file.version}</version>
50+
</dependency>
3551
<dependency>
3652
<groupId>org.springframework.cloud</groupId>
3753
<artifactId>spring-cloud-deployer-resource-maven</artifactId>

src/main/java/io/projectriff/invoker/ApplicationRunner.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package io.projectriff.invoker;
1818

19-
import java.util.Collections;
19+
import java.util.HashMap;
2020
import java.util.Map;
2121
import java.util.UUID;
2222

@@ -60,9 +60,7 @@ public void run(String... args) {
6060
ClassUtils.overrideThreadContextClassLoader(this.classLoader);
6161
Class<?> cls = this.classLoader.loadClass(ContextRunner.class.getName());
6262
this.app = new StandardEvaluationContext(cls.newInstance());
63-
runContext(this.source,
64-
Collections.singletonMap(LiveBeansView.MBEAN_DOMAIN_PROPERTY_NAME,
65-
"function-invoker-" + UUID.randomUUID()),
63+
runContext(this.source, defaultProperties(UUID.randomUUID().toString()),
6664
args);
6765
}
6866
catch (Exception e) {
@@ -77,6 +75,13 @@ public void run(String... args) {
7775
}
7876
}
7977

78+
private Map<String, String> defaultProperties(String id) {
79+
Map<String, String> map = new HashMap<>();
80+
map.put(LiveBeansView.MBEAN_DOMAIN_PROPERTY_NAME, "function-invoker-" + id);
81+
map.put("spring.jmx.default-domain", "function-invoker-" + id);
82+
return map;
83+
}
84+
8085
public Object getBean(String name) {
8186
if (this.app != null) {
8287
if (containsBeanByName(name)) {

src/main/java/io/projectriff/invoker/FunctionConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ public void run(String main) {
186186
main);
187187
// TODO: make the runtime properties configurable
188188
runner.run("--spring.main.webEnvironment=false",
189+
"--spring.cloud.stream.enabled=false",
189190
"--spring.main.bannerMode=OFF",
190191
"--spring.main.webApplicationType=none");
191192
this.runner = runner;

0 commit comments

Comments
 (0)