Просмотрено
Категория: Без рубрики

Нюансы подключения к ActiveMQ Artemis в обычном и кластерном режиме

Нюансы подключения к ActiveMQ Artemis в обычном и кластерном режиме

Проблема — клиент не восстанавливает подключение к серверу ActiveMQ после обрыва соединения. Здесь зависит от режима соединения. При обычном (не кластерном) соединении достаточно установить параметр reconnectAttempts=-1. Это заставит клиента бесконечно пытаться подключиться к узлу, с которым изначально было установлено соединение. По-умолчанию параметр установлен в значение 0, что запрещает попытки переподключения, также можно установить конкретное число попыток, например reconnectAttempts=5. В итоге соединение должно выглядеть примерно следующим образом: quarkus.artemis.url=tcp://127.0.0.1:61616?clientFailureCheckPeriod=5000&retryInterval=1000&reconnectAttempts=-1&callTimeout=3000 При кластерном подключении, значение параметра reconnectAttempts=-1 сыграет с Вами злую шутку, т.к. при…

Читать далее Читать далее

Особенности сборки native приложений в Quarkus через GraalVM

Особенности сборки native приложений в Quarkus через GraalVM

Столкнулся с некоторыми проблемами: Ошибки типа Discovered unresolved type during parsing… и Discovered unresolved method during parsing… Имеют свойство появляться в случайном порядке, если в приложении существует несколько мест вызывающих данную ошибку. Сначала пытался лечить путем добавления аргумента сборки quarkus.native.additional-build-args=—initialize-at-run-time….. но это оказалось бесполезно, т.к. при сборке, грааль сканирует весь код и находит места вызовов несуществующих классов/методов, и если найдёт, то прекращает сборку и вываливает ошибку. На эту тему есть небольшое замечание тут. Как скипнуть эту проблему или игнорировать такие…

Читать далее Читать далее

JPA Criteria API

JPA Criteria API

Выборка записей с максимальной датой в разрезе значений определённого поля На SQL выражение выглядит так (записи с максимальным create_timestamp у каждого sender’а): Но т.к. criteria api поддерживает подзапросы полько в секции where, то можно реализовать только такой запрос (будет делать то же самое): Если реализовать интерфейс Specification, то он будет выглядеть так: При этом, это поля из модели, сгенерированные maven-плагином: Выборка записей с максимальной датой На SQL выражение выглядит так (записи с максимальным create_timestamp): Если реализовать интерфейс Specification, то он…

Читать далее Читать далее

Логгирование обращений к базе данных в Spring Boot

Логгирование обращений к базе данных в Spring Boot

Чтобы логгировать SQL-запросы к базе данных — нужно добавить следующие свойства: Ещё есть вариант использовать библиотеку p6spy, которая будет писать в лог настоящие запросы:

Настройка Gitlab CI/CD для java приложения

Настройка Gitlab CI/CD для java приложения

1. Создание раннера Для начала нам нужно организовать постоянно работающий процесс (runner), который будет выполнять все задачи по нашему CICD (т.е. задания билдинга, проверки, закрузки на сервер и выполнения в нём каких-то команд). Кстати, у гитлаба есть много разных публичных runner’ов, но, во-первых — я бы не хотел чтобы код моего закрытого репозитория улетал на какие-то непонятные раннеры, во-вторых — раннер надо настроить под конкретную задачу, чтобы адекватно кешировались промежуточные результаты и не тормозил весь процесс снова и снова проделывая…

Читать далее Читать далее

JPA relations

JPA relations

Один ко многим БД: Branch. Справочная таблица реквизитов банка для денежных счетов. Поле Тип Описание Ограничения id varchar(32) Город операционного офиса банка PK bank varchar(256) Наименование офиса (для реквизитов перевода) not null bik varchar(9) БИК Branch_Code. Справочная таблица соответствия города и кода отделения банка. Поле Тип Описание Ограничения code integer Код отделения PK branch_id varchar(256) Город отделения not nullFK на branch.id при удалении записи в branch производится каскадное удаление Liquibase: Java: Один ко многим без @Id Один к одному Один…

Читать далее Читать далее

Установить Active MQ и IBM MQ локально

Установить Active MQ и IBM MQ локально

Речь идёт об установке данных систем локально с помощью Docker. Active MQ https://hub.docker.com/r/rmohr/activemq Запуск: 12docker pull rmohr/activemq docker run -p 61616:61616 -p 8161:8161 rmohr/activemq Подключение к web: http://localhost:8161/admin Логин/пароль: admin admin IBM MQ https://hub.docker.com/r/ibmcom/mq How to: https://github.com/ibm-messaging/mq-container/blob/master/docs/usage.md Запуск: 12docker pull ibmcom/mq docker run —env LICENSE=accept —env MQ_QMGR_NAME=QM1 —publish 1414:1414 —publish 9443:9443 —detach ibmcom/mq Подключение к web: https://localhost:9443/ Логин/пароль: admin passw0rd Имя администратора очередей: QM1 Канал: DEV.ADMIN.SVRCONN

Spring boot + i18n + Thymeleaf

Spring boot + i18n + Thymeleaf

Пошагавая инструкция как настроить интернационализацию в приложении на Spring. Пишу эту статью потому что там много нюансов, чтобы их самому не забыть). Исходные данные: Пустой проект на Java 11, созданный при помощи https://start.spring.io/ с зависимостями Spring Web, Thymeleaf. Для запуска интернационализации на проекте Spring Boot достаточно создать бандлы (файлы .properties) и объявить Bean — MessageSource. Создадим пару файлов: 1src\main\resources\locale\messages\app.properties 1src\main\resources\locale\messages\app_ru.properties со следующим содержимым соответственно: 12registration.label = Sign Up<br /> login.label=Sign In 12registration.label = Регистрация<br /> login.label=Вход Чтобы быстренько увидить работающую…

Читать далее Читать далее