Saltar a contenido

Spring Boot + PostgreSQL

Tentacolous

Ejecuta codigo Java cuando alguien inserta, modifica o elimina datos en PostgreSQL, aunque el cambio provenga de otra aplicacion, un script SQL o un sistema legado.

Olvidate de consultar la base de datos constantemente o de conectar toda tu aplicacion a JPA. Tentacolous detecta cambios reales mediante triggers y ejecuta metodos Java anotados de forma simple, rapida y confiable.

Empezar Documentación GitHub

@UponInserting(entity = Person.class)
public void onPersonInserted(Person person) {
    notify(person.getEmail());
}

Lo esencial

Conecta los cambios de PostgreSQL con tu codigo Java.

Tentacolous detecta cambios reales en tu base de datos y ejecuta automaticamente el codigo que tu defines. Sin importar si el cambio proviene de tu aplicacion, otra API, un script SQL o un sistema legado.

Detecta cambios reales

No solo escucha las operaciones realizadas por tu aplicacion. Tambien captura cambios hechos desde otras APIs, herramientas SQL, procesos ETL o sistemas legados.

Escribe solo Java

Anota un metodo con @UponInserting, @UponUpdating o @UponDeleting y recibe la entidad modificada lista para trabajar. Sin escribir consultas adicionales ni codigo repetitivo.

Funciona de forma confiable

Tentacolous utiliza triggers de PostgreSQL, una tabla de eventos y un procesador configurable para garantizar que cada cambio sea detectado y procesado correctamente.

Inicio rapido

Empieza en menos de 5 minutos.

Solo agrega la dependencia, configura Tentacolous y comienza a reaccionar a los cambios de PostgreSQL con Java.

  1. Agrega la dependenciaMaven Central

Maven Gradle

<dependency>
  <groupId>io.github.aimtone</groupId>
  <artifactId>tentacolous</artifactId>
  <version>0.1.8</version>
</dependency>
implementation 'io.github.aimtone:tentacolous:0.1.8'
  1. Agrega propertiesConfig Spring

application.yml application.properties

tentacolous:
  enabled: true
  schema-management: auto
  event-table: db_change_event
  poll-interval: 1s
  initial-delay: 0s
  batch-size: 100
  max-attempts: 3
tentacolous.enabled=true
tentacolous.schema-management=auto
tentacolous.event-table=db_change_event
tentacolous.poll-interval=1s
tentacolous.initial-delay=0s
tentacolous.batch-size=100
tentacolous.max-attempts=3
  1. Usa las anotacionesJava

Generica Insertar Actualizar Eliminar

@UponInserting(entity = Person.class)
public void onPersonInserted(Person person) {
    notify(person.getEmail());
}
@UponUpdating(entity = Person.class)
public void onPersonUpdated(Person person) {
    syncProfile(person);
}

// o

@UponUpdating(entity = Person.class)
public void onPersonUpdated(Person newPerson, Person oldPerson) {
    syncProfile(newPerson);
}

// o

@UponUpdating(entity = Person.class)
public void onPersonUpdated(Person newPerson, Person oldPerson, List<Person> history) {
    syncProfile(newPerson);
}
@UponDeleting(entity = Person.class)
public void onPersonDeleted(Person person) {
    removeFromIndex(person.getId());
}

// o

@UponDeleting(entity = Person.class)
public void onPersonDeleted(Person person, List<Person> history) {
    removeFromIndex(person.getId());
}
@TentacolousListener(
    entity = Person.class,
    action = ActionListener.UPDATE
)
public void onPersonUpdated(Person newPerson, Person oldPerson) {
    syncProfile(newPerson);
}

Necesitas detalles de filtros, modos de schema, seguridad o pruebas manuales?

Consulta la guia tecnica para ver configuracion avanzada, ejemplos completos y recomendaciones de produccion.

Abrir documentación