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.

Causado por: org.apache.camel.NoSuchBeanException: No se pudo encontrar un bean en el registro para: client de tipo: com.azure.storage.blob.BlobServiceClient

Estoy intentando conectarme a mi contenedor de Azure blob y subir el archivo tan pronto como se cree uno nuevo en un directorio. He creado un cliente de blob y he añadido la URL y las credenciales en el registro de camel. Sin embargo, tengo un problema de creación de bean. ¿Alguien puede ayudarme con esto?

@Component
public class CamelConfig extends RouteBuilder {

  StorageSharedKeyCredential credential = new StorageSharedKeyCredential(
      "accName",
      "accesskey"
  );

  String uri = String.format("https://xxxx.blob.core.windows.net","accName");

  @Override
  public void configure() throws Exception {
    try {
      CamelContext context = new DefaultCamelContext();
      SftpWatcherRoute route = new SftpWatcherRoute();
      BlobServiceClient client = new BlobServiceClientBuilder()
          .endpoint(uri)
          .credential(credential)
          .buildClient();
      context.getRegistry().bind("client", client);
      route.addRoutesToCamelContext(context);
      context.start();
      Thread.sleep(5000);
      context.stop();
    } catch (Exception exe) {
      exe.printStackTrace();
    }
  }
}
@Service
public class SftpWatcherRoute extends RouteBuilder {
  @Override
  public void configure() {
    from("file-watch:hello?events=CREATE&antInclude=*/.txt&recursive=true")
        .routeId("fileWatch")
        .to("direct:uploadFileToBlob")
        .end();

    from("direct:uploadFileToBlob")
        .routeId("uploadFile")
        .to("azure-storage-blob://accName/containerName?blobName=test.txt&serviceClient=#client")
        .end();
  }
}

Excepción:

Caused by: org.apache.camel.NoSuchBeanException: No se pudo encontrar un bean en el registro para: client de tipo: com.azure.storage.blob.BlobServiceClient
    at org.apache.camel.support.CamelContextHelper.mandatoryLookupAndConvert(CamelContextHelper.java:253) ~[camel-support-3.14.0.jar:3.14.0]
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La excepción anterior nos está indicando que Camel no puede encontrar un bean de tipo com.azure.storage.blob.BlobServiceClient en el registro llamado “client”. Analizando el fragmento de código proporcionado, parece que el bean “client” se está agregando correctamente al registro de Camel, por lo que el problema podría estar en la forma en que se está haciendo referencia al bean en la URI del punto final.

    En lugar de usar #client en la URI del punto final para referenciar el bean “client”, intenta usar ref:client. Por lo tanto, la línea relevante en SftpWatcherRoute sería:

    .to("azure-storage-blob://accName/containerName?blobName=test.txt&serviceClient=ref:client")

    Esto debería resolver el problema de NoSuchBeanException y permitir que Camel encuentre el bean “client” en el registro.

Comments are closed.