- ✨ Добавлена поддержка отправки объектов для интерфейсов mica-mqtt-client и mica-mqtt-server (github #98). Благодарим `@galaxy-sea` за вклад.
- ✨ В Mica-mqtt-client изменена стратегия переподключения MqttClient#reconnect (gitee #IBY5LQ). Благодарим `@лфдч CC` за обратную связь.
- ✨ В Mica-mqtt-codec оптимизирована функция MqttCodecUtil#isTopicFilter, теперь используется обратный цикл.
- ✨ В Mica-mqtt-codec проведена оптимизация кода, подробности см. netty #15227.
- ✨ В Mica-net-http HTTP API теперь имя заголовка ответа не преобразуется в нижний регистр.
- 🔧 В Mica-mqtt-common обновлен файл `module-info.java`, добавлен модуль сериализации.
- 🐛 В Mica-net-utils DefaultThreadFactory теперь не используется общий экземпляр (gitee #ICARS1). Благодарим `@doveylovey` за обратную связь.
- ✨ mica-mqtt-client-spring-boot-starter Реализация интерфейса `MqttDeserializer` для поддержки вызова с использованием泛型 (github #95). Спасибо `@galaxy-sea` за вклад
- ✨ mica-mqtt-client Поддержка массового подписывания, совместимое с mqtt 3.1.1, где некоторые брокеры возвращают только один `reasonCode`. Спасибо `@Jacky` за обратную связь
- ✨ mica-mqtt-server-solon-plugin Добавлена поддержка метрик
- ✨ mica-mqtt-client-solon-plugin Поддержка аннотированного подписывания с возможностью настройки сериализации (по умолчанию используется json сериализация) и поддержка泛型
## Обновление записи
- ✨ Аннотация `@MqttClientSubscribe` в `mica-mqtt-client-spring-boot-starter` поддерживает пользовательскую десериализацию.
- ✨ Улучшение кода: Spring Boot Client теперь может использовать пользовательский `MqttClientSubscribeDetector` (github #90, спасибо `@galaxy-sea` за вклад)
- ✨ Обновление mica-net до версии 1.1.6 для решения ошибки подключения клиента eclipse paho mqtt websocket к серверу mica-mqtt
- ✨ Корректировка зависимостей для уменьшения предупреждений безопасности в примерах проектов
- 🐛 Решена проблема с невозможностью нормального повторного подключения клиента при отправке сообщений во время перезапуска сервера (gitee #IC4DWT, спасибо `@wtjperi2003` за обратную связь)
- 🐛 Синхронизация netty mqtt codec: Исправлена ошибка присвоения параметра maxQoS в ConnAck Properties
## Обновление зависимостей
* ⬆️ Обновление com.google.code.gson:gson с 2.12.1 до 2.13.0 (@dependabot в https://github.com/dromara/mica-mqtt/pull/83)
* ⬆️ Обновление org.graalvm.sdk:graal-sdk с 24.2.0 до 24.2.1 (@dependabot в https://github.com/dromara/mica-mqtt/pull/84)
* ⬆️ Обновление solon.version с 3.1.2 до 3.2.0 (@dependabot в https://github.com/dromara/mica-mqtt/pull/85)
* ⬆️ Обновление com.google.code.gson:gson с 2.13.0 до 2.13.1 (@dependabot в https://github.com/dromara/mica-mqtt/pull/86)
* ⬆️ Обновление solon.version с 3.2.0 до 3.2.1 (@dependabot в https://github.com/dromara/mica-mqtt/pull/87)
## Новые участники
* @galaxy-sea сделал свой первый вклад в https://github.com/dromara/mica-mqtt/pull/90
**Полный лог обновлений**: https://gitee.com/dromara/mica-mqtt/commits/2.4.5
- ✨ mica-mqtt-server, лучше всего интегрирован с Android. Спасибо @KittenBall за совместное тестирование. GitHub #81
## Обновление
- :sparkles: Central Portal начал поддерживать Snapshots (сохраняются только 90 дней, необходимо как можно скорее перейти на последнюю стабильную версию), автоматическое публикование snapshot версии происходит после коммита в ветку dev через Github action.
- :sparkles: Удалены ненужные строки кода, код был передан на уровень mica-net.
- :sparkles: В mica-mqtt-client добавлены параметры heartbeatMode и heartbeatTimeoutStrategy для работы в условиях слабого интернета, gitee #IBSMZ7, благодарим `@拉风的CC` за обратную связь.
- :sparkles: В mica-mqtt-server по умолчанию добавлена зависимость на mica-net-http, теперь нет необходимости добавлять зависимость вручную, что упрощает использование.
- :sparkles: В mica-mqtt-server-spring-boot-starter добавлен метод `getMqttServer()` в MqttServerTemplate для удобства использования.
- :sparkles: В mica-mqtt-server-spring-boot-starter добавлена поддержка случаев, когда существует класс MeterRegistry, но бин MeterRegistry отсутствует, gitee #IBLBCY, благодарим `@xxg` за обратную связь.## Изменения
* :arrow_up: Обновлен solon.version с 3.0.6 до 3.0.7, @dependabot, https://github.com/dromara/mica-mqtt/pull/65
* :arrow_up: Обновлен com.google.code.gson:gson с 2.11.0 до 2.12.1, @dependabot, https://github.com/dromara/mica-mqtt/pull/67
* :arrow_up: Обновлен solon.version с 3.0.7 до 3.0.8, @dependabot, https://github.com/dromara/mica-mqtt/pull/68
* :arrow_up: Обновлен org.apache.maven.plugins:maven-compiler-plugin с 3.13.0 до 3.14.0, @dependabot, https://github.com/dromara/mica-mqtt/pull/70
* :arrow_up: Обновлен solon.version с 3.0.8 до 3.0.9, @dependabot, https://github.com/dromara/mica-mqtt/pull/71
* :arrow_up: Обновлен org.codehaus.mojo:flatten-maven-plugin с 1.6.0 до 1.7.0, @dependabot, https://github.com/dromara/mica-mqtt/pull/72
* :arrow_up: Обновлен solon.version с 3.0.9 до 3.1.0, @dependabot, https://github.com/dromara/mica-mqtt/pull/73
* :arrow_up: Обновлен mica-net.version с 1.1.1 до 1.1.3, @dependabot, https://github.com/dromara/mica-mqtt/pull/77
* :arrow_up: Обновлен org.graalvm.sdk:graal-sdk с 24.1.2 до 24.2.0, @dependabot, https://github.com/dromara/mica-mqtt/pull/78## Новые участники
* @dependabot сделал свой первый вклад в https://github.com/dromara/mica-mqtt/pull/65
**Полный список изменений**: https://github.com/dromara/mica-mqtt/compare/2.4.2...2.4.3
- ✨ Добавлено конфигурирование количества рабочих потоков `bizThreadPoolSize` в плагины mica-mqtt-client Spring Boot starter и solon (по умолчанию: 2; при большом объеме сообщений и сложной бизнес-логике можно увеличить это значение).
- ✨ В плагины mica-mqtt-client Spring Boot starter и solon добавлена конфигурация `sessionExpiryIntervalSecs` для MQTT 5.0. Благодарю `@cyber` за обратную связь (gitee #IBIE27).
- ✨ Изменена логика повторного подключения и заново подписки в mica-mqtt-client. При использовании аннотации `@MqttClientSubscribe` в плагинах Spring Boot starter и solon сессия будет восстановлена после перезапуска, что позволяет избежать потерю сообщений (gitee #IBIE27). Благодарю `@cyber` за обратную связь.
- ✨ Удалены `final` модификаторы из `DefaultMqttClientSession`, чтобы сделать его удобным для наследования и создания пользовательских версий.
- ✨ Теперь `clientId` привязывается к контексту, который можно получить через `context.getId()`. Это делает использование нескольких экземпляров mqtt клиентов более удобным (gitee #IBHHB1). Благодарю `@cv` за обратную связь.
- ✨ Проще стало протоколирование в mica-mqtt-server proxy благодаря полной абстракции в mica-net.
- ✨ Обновлен `TopicUtil` в mica-mqtt-common для поддержки нативной работы на Android (gitee #IBJBFL). Благодарю `@DeanNode` за обратную связь.
- ✨ По умолчанию имя узла `nodeName` теперь генерируется случайным образом с помощью `nanoId`, что также обеспечивает поддержку нативной работы на Android (gitee #IBJBFL). Благодарю `@DeanNode` за обратную связь.- ✨ Классы `MqttServerCustomizer` и `MqttClientCustomizer` были вынесены в mica-mqtt-server и mica-mqtt-client соответственно для удобства использования компонентов. Для перехода потребуется переименование пакетов, поэтому рекомендую удалить старые импорты перед тем как они будут автоматически заменены новыми (IDEA).
- 🐛 Исправлена проблема с появлением предупреждений при запуске Spring Boot 3.2 в mica-mqtt-client-spring-boot-starter (gitee #IBITP5). Благодарю `@cyber` за обратную связь.
- :sparkles:MQTT сервер теперь имеет унифицированные topics для подписки и публикации с аутентификацией логов для удобства диагностики проблем.
- :sparkles:MQTT сервер добавил поддержку протокола PROXY v1; nginx может передавать информацию о первоначальном IP при включении tcp proxy_protocol on.
- :memo:Исправлена ошибка в координатах Maven в документации.
- :bug:Исправлен баг в проектах Spring Boot, связанный с невозможностью глобального ленивого подключения к topic; gitee #IBFIV8, благодарим `@xixuanhao` за отчет.
- :sparkles: Добавлены HTTP API для `stats`, `clients` списка и `client details` интерфейса.
- :sparkles: В MqttServer и MqttServerTemplate добавлены интерфейсы для получения информации о клиентах `getClientInfo`, `getClients`.
- :sparkles: В MqttServer и MqttServerTemplate добавлен интерфейс `getSubscriptions` для получения списка подписок клиентов.
- :sparkles: В MqttServer и MqttServerTemplate добавлен интерфейс `getStat` для получения статистики.
- :truck: Изменён Maven groupId с `net.dreamlu` на новый `org.dromara.mica-mqtt`.
- :truck: Изменено имя пакета с `net.dreamlu.iot.mqtt` на новое `org.dromara.mica.mqtt`. Все остальные изменения отсутствуют.
- :truck: Переключение на центральный Sonatype. Центральный Sonatype не поддерживает snapshot версии, поэтому mica-mqtt больше не выпускает snapshot версий.
- :bug: Устранена проблема с моментом отправки подписок gitee #IB72L6. Благодарю `@江上烽` за обратную связь.