es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Azure Spring Cloud Function JAVA arroja excepción con disparador de EventGrid.

Estoy recibiendo la siguiente excepción mientras intentaba copiar un blob de Azure de container1 a container2 usando un evento desencadenador de eventGrid con una función de Java de nube de primavera de Azure.

Parece que hay un problema en la enlace de entrada en el manejo de la solicitud del controlador de la función de Azure.

No encuentro ningún ejemplo con un evento desencadenador de eventGrid en la documentación de Azure.

¿Alguien puede proporcionar sugerencias para resolver este problema?

Detalles del error:

Resultado: Fallo

Excepción: NullPointerException:

Stack:

java.lang.reflect.InvocationTargetException

en java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Método nativo)

en java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)

en java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)

en java.base/java.lang.reflect.Method.invoke (Method.java:566)

en com.microsoft.azure.functions.worker.broker.JavaMethodInvokeInfo.invoke (JavaMethodInvokeInfo.java:22)

en com.microsoft.azure.functions.worker.broker.EnhancedJavaMethodExecutorImpl.execute (EnhancedJavaMethodExecutorImpl.java:55)

en com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod (JavaFunctionBroker.java:57)

en com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute (InvocationRequestHandler.java:33)

A continuación se muestran mis clases:

TestInputArgs.java

@Data
@AllArgsConstructor
public class TestInputArgs {
private EventSchema event;
private byte[] content;
}

TestblobHandler.java

public class TestblobHandler extends FunctionInvoker<testinputargs,string> {

@FunctionName(“testblobupload”)
@StorageAccount(“AzureWebJobsStorage”)
public String run(

@EventGridTrigger(name = “TestEventTrg”) EventSchema event,
@BlobInput(name = “blob”, dataType = “binary”, path = “{data.url}”) byte[] content,
final ExecutionContext context)
throws StorageException, IOException {

handleRequest(new TestInputArgs(event,content),context);

return “Success”;

}

TestBlobUpload.java

@Component
public class TestBlobUpload implements Function<testinputargs,string> {

public String apply(TestInputArgs input) {
EventSchema event = input.getEvent();
byte[] content = input.getContent();

storageAccountDest = CloudStorageAccount.parse(storageConnectionStringDest);
blobClientDest = storageAccountDest.createCloudBlobClient();
containerDest = blobClientDest.getContainerReference(“Targetcontainer”);
CloudBlob blobDest = containerDest.getBlockBlobReference(“test.jpg”);
try {

blobDest.uploadFromByteArray(content, 0, content.length);

} catch (URISyntaxException e) {
e.printStackTrace();
} catch (StorageException e) {
e.printStackTrace();
}
return (“SUCCESS”);

}
}</testinputargs,string></testinputargs,string>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que tienes un problema con tu vinculación de entrada en el método handleRequest de tu controlador de función de Azure. Parece que estás usando un disparador de Event Grid y una vinculación de entrada de Blob en tu Función de Azure.

    Recomiendo que revises la documentación de Azure Functions para obtener más información sobre cómo utilizar las vinculaciones de entrada en tu Función de Azure. Además, puedes encontrar ejemplos de cómo utilizar un disparador de Event Grid con una Función de Java de Azure Spring Cloud aquí.

Comments are closed.