当前位置: 首页 > 知识库问答 >
问题:

Micronaut Lambda本机映像未读取自定义处理程序

段干庆
2023-03-14

默认情况下,micronaut的处理程序是类micronautlambdaHandler。但是在Micronaut指南上说

您将与之交互的主要API是AbstractMicronAutlambdarUntime。一个抽象类,您可以扩展它来创建您的自定义运行时MainClass。

因此,我尝试创建一个自定义处理程序和运行时,基本上是复制现有的MicronautlambdaHandlerMicronautlambdaRuntime

自定义MyRuntime

public class MyRuntime extends AbstractMicronautLambdaRuntime<AwsProxyRequest, AwsProxyResponse, AwsProxyRequest, AwsProxyResponse> {

    @Override
    protected RequestHandler<AwsProxyRequest, AwsProxyResponse> createRequestHandler(String... args) {
        try {
            return new MyHandler(createApplicationContextBuilderWithArgs(args));
        } catch (ContainerInitializationException e) {
            throw new ConfigurationException("Exception thrown instantiating MyHandler", e);
        }
    }

    public static void main(String[] args) {
        try {
            new MyRuntime().run(args);

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}
@Introspected
public class MyHandler implements RequestHandler<AwsProxyRequest, AwsProxyResponse>,
        ApplicationContextProvider, Closeable {

    protected final MicronautLambdaContainerHandler handler;

    public MyHandler() throws ContainerInitializationException {
        this.handler = new MicronautLambdaContainerHandler();
    }

    public MyHandler(ApplicationContextBuilder applicationContextBuilder) throws ContainerInitializationException {
        this.handler = new MicronautLambdaContainerHandler(applicationContextBuilder);
    }

    public MyHandler(ApplicationContext applicationContext) throws ContainerInitializationException {
        this.handler = new MicronautLambdaContainerHandler(applicationContext);
    }

    @Override
    public AwsProxyResponse handleRequest(AwsProxyRequest input, Context context) {
        System.out.println("hello custom handler");
        System.out.println(context.getAwsRequestId());
        return null;
    }

    @Override
    public ApplicationContext getApplicationContext() {
        return this.handler.getApplicationContext();
    }

    @Override
    public void close() {
        this.getApplicationContext().close();
    }
}

另外,奇怪的是,即使我将方法处理程序设置为一些随机的单词,如this.is.not.a.handler,它仍然默认运行MicronAutlambdaHandler

有没有一种方法可以像指南所建议的那样,为Micronaut Lambda创建我的自定义处理程序作为本机映像?或者我只是限制使用默认的MicronAutlambdaHandler

共有1个答案

闾丘昊然
2023-03-14

能够让它发挥作用。我需要显式地将依赖项实现(“io.micronaut.aws:micronaut-function-aws”)实现(“io.micronaut.aws:micronaut-function-aws-custom-runtime”)

我不明白的是,这些工件已经存在于类路径上,即使没有指定build.gradle,这就是为什么我从来没有把它们放在类路径上。

 类似资料:
  • 我最近在jBPM 6上迈出了第一步,并通过本地安装成功地运行。 然后,为了演示的可移植性,我尝试使用Docker来实现同样的功能,但只在一个方面取得了成功。 安装jBPM 6.2.0的本地版本时。最后,4个自定义工作项处理程序自动添加到工作台。日志、WebService、Rest和服务任务,我在流程中使用了它们。 安装jbpm工作台时:6.2.0。Final或jbpm workbench show

  • 可以通过实现接口或扩展任何现有的实现来创建自己的自定义处理程序。 在下面的示例中,我们通过扩展类创建了自定义处理程序。 为了理解上述与DBUtils相关的概念,让我们编写一个将运行读取查询的示例。 创建一个示例应用程序。 更新在DBUtils入门程序中创建的文件:MainApp.java。 按照下面的说明编译并运行应用程序。 以下是的内容。 以下是文件的内容。 以下是文件的内容。 完成创建源文件后

  • 然而,我很难从数据库视图中获得最近的更新。主要问题是何时向数据库中添加新条目。由于数据库是在初始化处理器时查询的,因此自定义处理器将不会有新的条目。 我尝试在public void onTrigger()函数中实现查询;然而,这将导致管道备份,因为它将对每个flowfile查询数据库(如果每秒有数千个flowfile传入,这就不理想了)。 处理器启动时是否有查询数据库的方法;不在每个flowfil

  • 为什么children.length导致未处理拒绝(TypeError):无法读取未定义的属性(读取'length'),特别是因为children.length的值已成功地显示在控制台上?

  • 我们可以通过实现ResultSetHandler接口或扩展ResultSetHandler的任何现有实现来创建我们自己的自定义处理程序。 在下面给出的示例中,我们通过扩展BeanHandler类创建了一个自定义处理程序EmployeeHandler。 要理解与DBUtils相关的上述概念,让我们编写一个运行读取查询的示例。 要编写我们的示例,让我们创建一个示例应用程序。 步 描述 1 更新在 DB

  • 问题内容: 谁能给我一个创建事件和处理程序的自定义集的示例。假设您有一个Person对象,您希望小部件知道它是否已更新。 您创建了一个HandlerManager,现在您必须创建一个Event和一个Handler。您将如何定义这些类,以便可以订阅和引发事件? 大多数事件都是基于DOM的,而我想创建一些自定义事件和处理程序,这些事件和处理程序可以在任何基于浏览器的事件之外触发。 问题答案: 这是一个