2. JMS + IBM MQ + Tests

2. JMS + IBM MQ + Tests

Нужно написать интеграционный тест для тестирования обработки входящих в топик сообщений. Для этого нужно будет настроить тестовый контекст таким образом, чтобы поднимался встроенный JMS-сервер, через который осуществлялось бы взаимодействие. Буду рассматривать приложение, описанное в первой статье: https://blog.knasys.ru/1-jms-ibm-mq-pub-sub/ Я не нашел информации о том можно ли встроить IBM MQ в приложение, поэтому встраивать будем ActiveMQ (он так умеет точно =) ), а поскольку он тоже является реализацией JMS, то проблем быть не должно. Для начала нам понадобится зависимость: Далее, для тестового…

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

1. JMS + IBM MQ — чтение из топика (паттерн Publisher/Subscriber)

1. JMS + IBM MQ — чтение из топика (паттерн Publisher/Subscriber)

Для начала нам понадобится сервис IBM MQ. Поднимаем его локально с помощью Docker. Для этого выполним команду в консоли: В результате скачается и запустится образ. Будут проброшены 2 порта — 11414 (для взаимодействия с MQ) и 9443 (web-интерфейс).Web-интерфейс поднимется не сразу, у меня он начинает работать только минуты через 4 после запуска контейнера. До этого то соединение сброшено, то ошибка установки защищённого соединения, то неожиданный ответ. В итоге, когда web-интерфейс — таки поднимется, зайти в него можно используя логин и…

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

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 Один к одному Один…

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

Intellij Idea, Java, Spring — Troubleshooting

Intellij Idea, Java, Spring — Troubleshooting

Type specified for TypedQuery [ru.knastnt.app.MyClass] is incompatible with query return type [class ru.knastnt.app.MyClass] Такое случается при дебаге и решается с путём исключения из pom.xml зависимости spring-boot-devtools. Can’t load camunda cockpit with error in console: It was not able to load the following file ‘app/plugin.js’ Проблема описана здесь https://jira.camunda.com/browse/CAM-10738 и решением является: — либо запуск с использованием Shorten command line: — либо удаление из .idea/workspace.xml строки <property name=»dynamic.classpath» value=»true» /> @JsonAnySetter not works. @JsonAnySetter не работает на вложенных объектах. С этой…

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

Установить 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

Liquibase

Liquibase

Не буду разжевывать то что и так везде разжевано, просто запишу тут некоторые вещи. Если нужно управлять ченджсетами вне контекста java-приложения, то это можно сделать непосредственно через утилиту liquibase.exe. Для начала нужно установить liquibase на компьютер.Затем добавить в директорию lib драйвер postgre-jdbc (желательно версии не ниже 9.6, а то будут потом проблемы).Затем запускать из директории проекта. Применение файла _.xml (если это обновление уже применено, то второй раз уже не применяется): При этом история применения обновлений сохраняется в двух служебных таблицах:…

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

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=Вход Чтобы быстренько увидить работающую…

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

Java + Apache Kafka = Первый проект

Java + Apache Kafka = Первый проект

Статья разбита на 2 части: Установка Kafka на сервер и создание SpringBoot приложения. Если вы вообще не в курсе за брокеров сообщений, то советую посмотреть два видосика про Apache Kafka и Rabbit MQ. Они дадут понимание как там что работает и чем отличается: I. Установка Apache Kafka В качестве базовой системы у меня CentOS 7 x86_64 Minimal 1804. Для кафки рекомендуется иметь 4 Gb оперативки. Перед началом работы ставлю нужные мне программы: sudo yum install mc nano net-tools wget -y…

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

Java шпаргалка

Java шпаргалка

Файл application.properties Большой список всевозможных свойств и описаний к ним Получение значения параметра свойства Надо пометить переменную наподобие такого RestTemplate send PATCH request При попытке отправить PATCH запрос, возникает исключение ProtocolException: Invalid HTTP method: PATCH или ResourceAccessException: I/O error on PATCH request Для решения проблемы следует добавить зависимость: И создавать RestTemplate следующим образом: Spring инициализация Запуск своего кода при загрузке Spring i18n Internalization Поддержка языков при использовании Spring Boot. Достаточно определить бин: И разместить бандлы в указанном месте (locale/messages/app). Т.е.:…

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

Резервное копирование данных пользователей по сети. Часть 2

Резервное копирование данных пользователей по сети. Часть 2

Первая часть была здесь Спойлер: данная статья написана о первой версии программы. В настоящее время я развиваю данный проект: пофиксил баги, сделал UI, проработал документацию и собрал установщики! Добро пожаловать на сайт: netbackup.blog.knasys.ru В этой части расскажу как можно приготовить сервер для бакапов. Сразу прошу прощения за качество изображений — делал на скорую руку. Имеется: 4 HDD на 1 Tb Материнка ASUS H81M-R Процессор Intel Celeron (2,4 GHz вроде) DDR3 4Gb Чтобы не быть пиратом и не тратить лицензию на…

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