You've successfully subscribed to Заметки Разработчиков
Great! Next, complete checkout for full access to Заметки Разработчиков
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info is updated.
Billing info update failed.

quarkus

Нативная сборка Quarkus сервиса

Рассказываю о своем опыте сборки Quarkus сервиса в нативном режиме.

Провозился два дня, но в итоге смог собрать один из микро-сервисов в нативном режиме. Ничего сложного, было много нюансов в настройке CICD.

Самое полезное, это вот эта документация Quarkus. А конкретно флаги:

-Dquarkus.native.container-build=true
-Dquarkus.native.remote-container-build=true
В моем случае вот этот

Также слепил образ для GitLab-раннера, который совмещает GraalVM и Docker, осталось добавить в него Gradle, но пока использую ./gradlew.

FROM ghcr.io/graalvm/graalvm-ce:ol9-java17-22.3.0
WORKDIR /opt/graalvm
RUN microdnf -y install dnf-plugins-core
RUN microdnf -y install yum
RUN yum install -y yum-utils
RUN yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
RUN yum install -y docker-ce docker-ce-cli containerd.io
RUN gu install native-image

Сервис стал собираться в 2,5 раза больше, около 5 минут, вместо 2. Но теперь он стартует моментально, наверное за доли секунды. При этом на под выделяется всего 256 mb ОЗУ на старте и 512 mb в момент работы.

Логирование sql в SpringBoot Hibernate

Чтобы каждый раз не искать эти проперти оставлю их тут. Включение логирования sql в SpringBoot spring: jpa: show-sql: true properties: hibernate: format_sql: true Если требуется добавить вывод аргументов, то добавляем еще logging: level: org: hibernate: type: trace Включение логирования sql в Quarkus quarkus: hibernate-orm: log: sql: true format-sql: true

Чтобы каждый раз не искать эти проперти оставлю их тут.

Включение логирования sql в SpringBoot

spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true

Если требуется добавить вывод аргументов, то добавляем еще

logging:
  level:
    org:
      hibernate:
        type: trace

Включение логирования sql в Quarkus

quarkus:
  hibernate-orm:
    log:
      sql: true
      format-sql: true
      bind-parameters: true

Циклические зависимости сервисов

Циклические зависимости между сервисами возникают, когда сервисы взаимно внедряются друг в друга. Например, сервис А внедряет сервис Б, но в тоже время сервис Б внедряет сервис А. Разбираемся, как распутать этот клубок в Spring и Quarkus.