AzureSpringBootRequestHandler не может найти функцию - PullRequest
0 голосов
/ 23 марта 2020

У меня есть простое приложение Spring Boot Function с двумя конечными точками. Оба выдают Exception: IllegalStateException: No function defined error со следующей трассировкой стека:

[23/03/2020 14:16:57] 2020-03-23 11:16:57.455  WARN 4788 --- [pool-2-thread-5] c.f.c.c.BeanFactoryAwareFunctionRegistry : !!! Failed to discover function 'UserPublish' in function catalog. Function available in catalog are: [userGet, userPublish, functionRouter]
[23/03/2020 14:16:57]   at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
[23/03/2020 14:16:57]   at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:45)
[23/03/2020 14:16:57]   at com.microsoft.azure.functions.worker.JavaWorkerClient$StreamingMessagePeer.lambda$onNext$0(JavaWorkerClient.java:92)
[23/03/2020 14:16:57]   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[23/03/2020 14:16:57]   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[23/03/2020 14:16:57]   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[23/03/2020 14:16:57]   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[23/03/2020 14:16:57]   at java.lang.Thread.run(Thread.java:748)
[23/03/2020 14:16:57] Caused by: java.lang.IllegalStateException: No function defined
[23/03/2020 14:16:57]   at org.springframework.cloud.function.context.AbstractSpringFunctionAdapterInitializer.apply(AbstractSpringFunctionAdapterInitializer.java:184)
[23/03/2020 14:16:57]   at org.springframework.cloud.function.adapter.azure.AzureSpringBootRequestHandler.handleRequest(AzureSpringBootRequestHandler.java:83)
[23/03/2020 14:16:57]   at org.springframework.cloud.function.adapter.azure.AzureSpringBootRequestHandler.handleRequest(AzureSpringBootRequestHandler.java:79)
[23/03/2020 14:16:57]   at com.mrlima.app.handler.azure.UserHandler.publish(UserHandler.java:42)

Как видите, единственная разница между тем, что он пытается обнаружить, и тем, что находится в каталоге, - это случай первой буквы. Не уверен, что это действительно причина root, но мне интересно, почему это происходит, поскольку я определил свой обработчик следующим образом:

public class UserHandler extends AzureSpringBootRequestHandler<User, User> {

    @FunctionName("UserGet")
    public User get(@HttpTrigger(name = "request", methods = { HttpMethod.GET,
            HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS, route = "users") HttpRequestMessage<Optional<User>> request,
            ExecutionContext context) {

        // implementation

        return handleRequest(user, context);
    }

    @FunctionName("UserPublish")
    public User publish(@HttpTrigger(name = "request", methods = {
            HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS, route = "users/pub") HttpRequestMessage<User> request,
            ExecutionContext context) {

        context.getLogger().info(String.format("Request to publish user with data %s", request.getBody()));

        return handleRequest(request.getBody(), context);
    }

И мои действительные функции

public class UserGet implements Function<User, User> {

    @Override
    public User apply(User user) {
        return new User(String.format("Hello %s", user.getName()));
    }
}

public class UserPublish implements Function<User, User> {

    @Override
    public User apply(User user) {
        return new User(String.format("Published user record %s", user.getName()));
    }
}

Чтобы сделать вещи немного более странными, это работало, когда у меня была только функция UserGet. После того, как я добавил UserPublish, он начал показывать эту ошибку ...

Я получил этот проект в этом репо .

Любое понимание здесь очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...