Нюансы подключения к 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….. но это оказалось бесполезно, т.к. при сборке, грааль сканирует весь код и находит места вызовов несуществующих классов/методов, и если найдёт, то прекращает сборку и вываливает ошибку. На эту тему есть небольшое замечание тут. Как скипнуть эту проблему или игнорировать такие…

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

Изменение версии java в Ubuntu

Изменение версии java в Ubuntu

Рассматриваемая система — Ubuntu 22.04. Нужно сделать так, чтобы была возможность одной командой изменить дефолтную версию java. На самом деле оно уже есть, и чтобы изменить версию java в ubuntu, нужно лишь использовать команду: Эта команда изменит ссылку файла /usr/bin/java, которая ссылается на одну из установленных версий java (обычно в директории /usr/lib/jvm). Также переменная JAVA_HOME, которая по-умолчанию ссылается на /usr/bin/java, попадёт в выбранную версию. Всё работало до того момента, когда мне понадобилось добавить GraalVm. Во-первых, GraalVm не появляется в списке…

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

Логгирование JMS сообщений

Логгирование JMS сообщений

Различные способы логгирования JMS сообщений: 1. Логгирование внутри конвертора (Плюс в том, что будет логгироваться тело сообщения как есть. Если сообщение невозможно распарстить, то оно тоже залоггируется (если конечно это TextMessage)): 2. Логгирование внутри jmsTemplate при отправке (Тоже тело сообщения как есть): 3. Логгирование внутри @JmsListener’а (Тоже тело сообщения как есть): 4. Установка уровня логгирования для входящих сообщений (Минус в том, что логгируется объект Message целиком, и тело сообщения может просто не влезть в максимальную длину записи лога):

JPA Criteria API

JPA Criteria API

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

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

Открыть файл — предупреждение системы безопасности как отключить

Открыть файл — предупреждение системы безопасности как отключить

Такая вот ерунда просто вымогает при каждом запуске вполне легитимных приложений: В интернете полно статей как отключить защиту Defender, поправить групповые политики, изменить настройки конфиденциальности, разблокировать приложение… Всё это шляпа. Оказалось, что если запускать непосредственно сам exe-шник, то запускается сразу без этих дурацких вопросов. Значит дело в ярлыке. Но не понятно что с ним не так. Проблему удалось решить случайно, итак: На exe-шнике жмём правой кнопкой — Создать ярлык, вылезет окошко с предложением создать его на рабочем столе — жмём…

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

Spring data jdbc: one-to-one, one-to-many relations

Spring data jdbc: one-to-one, one-to-many relations

Т.к. в Spring Data JDBC нет стандартных хибернейтовских аннотаций типа @OneToOne, @OneToMany и @JoinColumn, то для меня было проблематично понять можно ли там вообще организовать отношения и использовать их при получении или сохранении объектов. Оказалось это делается так: One-To-One При такой реализации объект Operation без проблем вычитывается из БД уже с смапленным внутрь TaxInfo. Так же без проблем работает сохранение нового Operation с заполненным TaxInfo (корректно заполняются поля id и operationId. One-To-Many Несколько проблематично отношение один ко многим. Здесь сложность…

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

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

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

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