Apache Ignite Extensions Release Notes
===========================

Apache Ignite Performance Statistics Module 1.0
-------------------------------------

* Added the tool to build the cluster performance report
* Added the utility to print performance statistics operations to a console or to a file in JSON format


Apache Ignite Spring Data Modules 1.0
-------------------------------------

* Added the ability to connect to the Ignite cluster through the Ignite thin client for the Spring Data extensions
* Fixed closing of Spring Data Ignite resources after destroying the Spring context if they were automatically started by the manager

The following integrations were migrated to the Apache Ignite Extensions repository:
* Spring Data 2.2 extension
* Spring Data 2.0 extension
* Spring Data extension


Apache Ignite Spring Transactions Module 1.0
-------------------------------------

* Added the ability to connect to the Ignite cluster through the Ignite thin client

The following integration was migrated to the Apache Ignite Extensions repository:
* Spring Transactions extension


Apache Ignite Streamer Extension Modules 1.0
-------------------------------------
The following integrations were migrated the Apache Ignite Extensions repository:
* Camel integration extension
* Flink integration extension
* Flume integration extension
* JMS integration extension
* Kafka integration extension
* MQTT integration extension
* Pub/Sub integration extension
* RocketMQ integration extension
* Storm integration extension
* Twitter integration extension
* ZeroMQ integration extension


Apache Ignite Spring Boot Modules 1.0
-------------------------------------

* Auto configure of Ignite node for spring-boot based applications implemented.
* Auto configure of Ignite thin client for spring-boot based applications implemented.
