pubSubFunction() {
+ return message -> {
+ // The PubSubMessage data field arrives as a base-64 encoded string and must be decoded.
+ // See: https://cloud.google.com/functions/docs/calling/pubsub#event_structure
+ String decodedMessage = new String(Base64.getDecoder().decode(message.getData()), StandardCharsets.UTF_8);
+ System.out.println("Received Pub/Sub message with data: " + decodedMessage);
+ };
+ }
+}
diff --git a/spring-cloud-function-samples/function-sample-gcp-background/src/main/java/com/example/PubSubMessage.java b/spring-cloud-function-samples/function-sample-gcp-background/src/main/java/com/example/PubSubMessage.java
new file mode 100644
index 000000000..01b5084fa
--- /dev/null
+++ b/spring-cloud-function-samples/function-sample-gcp-background/src/main/java/com/example/PubSubMessage.java
@@ -0,0 +1,56 @@
+package com.example;
+
+import java.util.Map;
+
+/**
+ * A class that can be mapped to the GCF Pub/Sub Message event type. This is for use in
+ * the background functions.
+ *
+ * See the PubSubMessage definition for reference:
+ * https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage
+ *
+ * @author Mike Eltsufin
+ */
+public class PubSubMessage {
+
+ private String data;
+
+ private Map attributes;
+
+ private String messageId;
+
+ private String publishTime;
+
+ public String getData() {
+ return data;
+ }
+
+ public void setData(String data) {
+ this.data = data;
+ }
+
+ public Map getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(Map attributes) {
+ this.attributes = attributes;
+ }
+
+ public String getMessageId() {
+ return messageId;
+ }
+
+ public void setMessageId(String messageId) {
+ this.messageId = messageId;
+ }
+
+ public String getPublishTime() {
+ return publishTime;
+ }
+
+ public void setPublishTime(String publishTime) {
+ this.publishTime = publishTime;
+ }
+
+}
diff --git a/spring-cloud-function-samples/function-sample-gcp-background/src/main/resources/META-INF/MANIFEST.MF b/spring-cloud-function-samples/function-sample-gcp-background/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..edd9a3bf2
--- /dev/null
+++ b/spring-cloud-function-samples/function-sample-gcp-background/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1 @@
+Main-Class: com.example.BackgroundFunctionMain
diff --git a/spring-cloud-function-samples/function-sample-gcp/README.adoc b/spring-cloud-function-samples/function-sample-gcp-http/README.adoc
similarity index 92%
rename from spring-cloud-function-samples/function-sample-gcp/README.adoc
rename to spring-cloud-function-samples/function-sample-gcp-http/README.adoc
index 000f0aa3c..385e9123f 100644
--- a/spring-cloud-function-samples/function-sample-gcp/README.adoc
+++ b/spring-cloud-function-samples/function-sample-gcp-http/README.adoc
@@ -34,7 +34,7 @@ Make sure that you have the https://cloud.google.com/sdk/install[Cloud SDK CLI]
Run the following command from the project root to deploy.
----
-gcloud alpha functions deploy function-sample-gcp \
+gcloud alpha functions deploy function-sample-gcp-http \
--entry-point org.springframework.cloud.function.adapter.gcp.GcfJarLauncher \
--runtime java11 \
--trigger-http \
@@ -45,5 +45,5 @@ gcloud alpha functions deploy function-sample-gcp \
Invoke the HTTP function:
----
-curl https://REGION-PROJECT_ID.cloudfunctions.net/function-sample-gcp -d "hello"
+curl https://REGION-PROJECT_ID.cloudfunctions.net/function-sample-gcp-http -d "hello"
----
diff --git a/spring-cloud-function-samples/function-sample-gcp/pom.xml b/spring-cloud-function-samples/function-sample-gcp-http/pom.xml
similarity index 97%
rename from spring-cloud-function-samples/function-sample-gcp/pom.xml
rename to spring-cloud-function-samples/function-sample-gcp-http/pom.xml
index 02463d804..7229cff48 100644
--- a/spring-cloud-function-samples/function-sample-gcp/pom.xml
+++ b/spring-cloud-function-samples/function-sample-gcp-http/pom.xml
@@ -6,11 +6,11 @@
4.0.0
io.spring.sample
- function-sample-gcp
+ function-sample-gcp-http
2.0.0.RELEASE
jar
- function-sample-gcp
+ function-sample-gcp-http
org.springframework.boot
@@ -77,7 +77,6 @@
-
diff --git a/spring-cloud-function-samples/function-sample-gcp/src/main/java/com/example/CloudFunctionMain.java b/spring-cloud-function-samples/function-sample-gcp-http/src/main/java/com/example/CloudFunctionMain.java
similarity index 100%
rename from spring-cloud-function-samples/function-sample-gcp/src/main/java/com/example/CloudFunctionMain.java
rename to spring-cloud-function-samples/function-sample-gcp-http/src/main/java/com/example/CloudFunctionMain.java
diff --git a/spring-cloud-function-samples/function-sample-gcp/src/main/resources/META-INF/MANIFEST.MF b/spring-cloud-function-samples/function-sample-gcp-http/src/main/resources/META-INF/MANIFEST.MF
similarity index 100%
rename from spring-cloud-function-samples/function-sample-gcp/src/main/resources/META-INF/MANIFEST.MF
rename to spring-cloud-function-samples/function-sample-gcp-http/src/main/resources/META-INF/MANIFEST.MF
diff --git a/spring-cloud-function-samples/function-sample-gcp/src/test/java/com/example/FunctionSampleGcpIntegrationTest.java b/spring-cloud-function-samples/function-sample-gcp-http/src/test/java/com/example/FunctionSampleGcpIntegrationTest.java
similarity index 100%
rename from spring-cloud-function-samples/function-sample-gcp/src/test/java/com/example/FunctionSampleGcpIntegrationTest.java
rename to spring-cloud-function-samples/function-sample-gcp-http/src/test/java/com/example/FunctionSampleGcpIntegrationTest.java
diff --git a/spring-cloud-function-samples/pom.xml b/spring-cloud-function-samples/pom.xml
index f98633316..4b793b8f7 100644
--- a/spring-cloud-function-samples/pom.xml
+++ b/spring-cloud-function-samples/pom.xml
@@ -24,8 +24,9 @@
function-sample-aws-custom
function-sample-supplier-exporter
function-sample-azure
- function-sample-spring-integration
- function-sample-gcp
+ function-sample-spring-integration-->
+ function-sample-gcp-http
+ function-sample-gcp-background