Remove dependency on servlet container from AWSCustomRuntime
This commit is contained in:
committed by
Oleg Zhurakousky
parent
60c771868f
commit
3b88030038
@@ -135,7 +135,7 @@ public final class CustomRuntimeEventLoop implements SmartLifecycle {
|
|||||||
logger.debug("New Event received: " + response);
|
logger.debug("New Event received: " + response);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response != null) {
|
if (response != null && response.hasBody()) {
|
||||||
String requestId = response.getHeaders().getFirst("Lambda-Runtime-Aws-Request-Id");
|
String requestId = response.getHeaders().getFirst("Lambda-Runtime-Aws-Request-Id");
|
||||||
try {
|
try {
|
||||||
FunctionInvocationWrapper function = locateFunction(environment, functionCatalog, response.getHeaders());
|
FunctionInvocationWrapper function = locateFunction(environment, functionCatalog, response.getHeaders());
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.springframework.cloud.function.adapter.test.aws;
|
package org.springframework.cloud.function.adapter.test.aws;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.ArrayBlockingQueue;
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -23,8 +24,9 @@ import java.util.function.Consumer;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
import org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext;
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.core.env.MapPropertySource;
|
||||||
import org.springframework.messaging.Message;
|
import org.springframework.messaging.Message;
|
||||||
import org.springframework.messaging.support.MessageBuilder;
|
import org.springframework.messaging.support.MessageBuilder;
|
||||||
import org.springframework.util.MimeTypeUtils;
|
import org.springframework.util.MimeTypeUtils;
|
||||||
@@ -42,9 +44,10 @@ public class AWSCustomRuntime {
|
|||||||
|
|
||||||
BlockingQueue<Message<String>> outputQueue = new ArrayBlockingQueue<>(3);
|
BlockingQueue<Message<String>> outputQueue = new ArrayBlockingQueue<>(3);
|
||||||
|
|
||||||
public AWSCustomRuntime(ServletWebServerApplicationContext context) {
|
public AWSCustomRuntime(ConfigurableApplicationContext context) {
|
||||||
int port = context.getWebServer().getPort();
|
context.getEnvironment().getPropertySources().addFirst(
|
||||||
System.setProperty("AWS_LAMBDA_RUNTIME_API", "localhost:" + port);
|
new MapPropertySource("AWSCustomRuntime",
|
||||||
|
Map.of("AWS_LAMBDA_RUNTIME_API", "localhost:${local.server.port}")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("2018-06-01/runtime/invocation/consume/response")
|
@Bean("2018-06-01/runtime/invocation/consume/response")
|
||||||
@@ -58,7 +61,10 @@ public class AWSCustomRuntime {
|
|||||||
|
|
||||||
return () -> {
|
return () -> {
|
||||||
try {
|
try {
|
||||||
Object value = inputQueue.poll(Long.MAX_VALUE, TimeUnit.SECONDS);
|
Object value = inputQueue.poll(1L, TimeUnit.SECONDS);
|
||||||
|
if (value == null) {
|
||||||
|
return MessageBuilder.withPayload("").build();
|
||||||
|
}
|
||||||
if (!(value instanceof Message)) {
|
if (!(value instanceof Message)) {
|
||||||
return MessageBuilder.withPayload((String) value)
|
return MessageBuilder.withPayload((String) value)
|
||||||
.setHeader("Lambda-Runtime-Aws-Request-Id", "consume")
|
.setHeader("Lambda-Runtime-Aws-Request-Id", "consume")
|
||||||
|
|||||||
Reference in New Issue
Block a user