Hi Nikolay, I have reviewed the PR and shared comments.
Please let me know if you have any feedback. Regards, Saikat On Mon, Jan 20, 2020 at 2:42 PM Николай Ижиков <nizhi...@apache.org> wrote: > Hello, Saikat. > > Thanks, for feedback. > > I raised a PR [1] to `ignite-extensions`. > > You can find description of the new module below(examples can be found at > [2]): > > Module provides the ability to integrate `Ignite` into you spring-boot > application with zero(or minimal) configuration. > > After you add this module as a dependency to your spring-boot application > `Ignite` node will be configured and injected into `BeanFactory`. > > Algorithm to configure `Ignite` is the following: > 1. If `IgniteConfiguration` bean exists in the `BeanFactory` it will be > used. > 2. If `IgniteConfiguration` bean doesn't exist following rules are > applied: > 2.1. Default `Ignite` configuration created. > 2.2. If `IgniteConfigurer` bean exists in `BeanFactory` it will be > used to customize `IgniteConfiguration`. > If a user wants to set custom SPI instances or similar hardcoded > values > one should do it with `IgniteConfigurer` implementation. > 2.3 Application properties applied to `IgniteConfiguration`. Prefix > for the properties is `ignite`. > > > [1] https://github.com/apache/ignite-extensions/pull/6 > [2] https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example > > > > 18 янв. 2020 г., в 06:44, Saikat Maitra <saikat.mai...@gmail.com> > написал(а): > > > > Hi Nikolay, > > > > Thank you for your email. As part of Ignite Extensions migration we are > migrating Ignite Extensions to following repo. > > > > https://github.com/apache/ignite-extensions > > > > We have added flink and pub-sub modules and few additional modules are > open in PR. > > > > You can refer to this PR to see how we are migrating the modules > https://github.com/apache/ignite-extensions/pull/5 > > > > I wanted to connect and discuss the changes to understand the spring > boot auto configure feature. We currently have an ignite spring module that > allows resource injection capabilities and provides a parser for Spring > based xml configuration files. Can you please review and share if the > changes you are proposing can be added as part of Ignite spring module or > it make sense to make it a separate spring boot auto configure module. > > > > https://github.com/apache/ignite/tree/master/modules/spring > > > > Regards, > > Saikat > > > > > > > > > > > > > > > > On Fri, Jan 17, 2020 at 3:12 AM Николай Ижиков <nizhi...@apache.org> > wrote: > > Tests added. > > Please, review. > > > > Saikat, can you help with this PR [1]? > > > > I think it should be added as a separate module as we do with the flink > integration. > > Can you help me with it? > > Do we have some how-to for it? > > > > [1] https://github.com/apache/ignite/pull/7237 > > > > > 16 янв. 2020 г., в 16:51, Николай Ижиков <nizhikov....@gmail.com> > написал(а): > > > > > > Hello, Denis. > > > > > > Thanks, for the feedback. > > > > > > Alexey, it seems, PR is ready to be reviewed, but I need some time(a > day or two) to write tests. > > > You can start with the core code review if you wish. > > > > > > Here are autoconfigurer requirements: > > > > > > 1. Start usage of Ignite with minimal(or zero) configuration. > > > 2. Configure Ignite configuration properties with the standard spring > boot application properties. > > > 3. Configure Ignite SPI implementation and so on that can’t be > configured via #2. > > > > > > After some consultation with the Spring experts from the > community(Maxim Stepachev thanks for the idea) > > > I updated the PR with the logic described below: > > > > > > 1. To enable Ignite auto-configuration user should add > `org.apache.ignite:spring-boot-ignite-autoconfigure:2.9.0` to dependencies. > > > After it Ignite node will be started during spring-boot application > startup. > > > > > > 2. IgniteConfiguration initialization logic: > > > > > > 2.1 If {@link IgniteConfiguration} bean exists in {@link BeanFactory} > it will be used for the node start. > > > 2.2 If {@link IgniteConfiguration} bean doesn't exist following rules > are applied: > > > * Newly introducer IgniteConfigurer bean will be used to customize an > empty IgniteConfiguration instance. > > > If a user wants to set custom SPI instances or similar hardcoded > values one should do it IgniteConfigurer implementation. > > > > > > * Application properties will override config values. Prefix for > properties names is "ignite». > > > > > > PS. Similar logic applied for the second module - > `org.apache.ignite:spring-boot-ignite-client-autoconfigure:2.9.0`. > > > It provides the same features but for the autoconfiguration of the > IgniteClient > > > > > > > > >> 15 янв. 2020 г., в 03:03, Denis Magda <dma...@apache.org> написал(а): > > >> > > >> Nikolay, > > >> > > >> Thanks for contributing in this direction! That's one of the gaps on > our > > >> end and the user community will be certainly thankful once we fill it > in. > > >> > > >> *Alexey Kuznetsov*, as one of the Spring Boot experts, could you > spend some > > >> time reviewing the changes? > > >> > > >> As for the extensions/modularization activities, please join Saikat > in the > > >> discussions ([1] and [2]). He is contributing the foundation and > moving our > > >> existing integrations to that new repository. The Spring Boot > improvements > > >> might be moved or, another option, we might add this class to the > core? > > >> > > >> [1] > > >> > http://apache-ignite-developers.2346864.n4.nabble.com/IGNITE-12361-Migrate-Flume-module-to-ignite-extensions-td45010.html > > >> [2] > > >> > http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Proposal-for-Ignite-Extensions-as-a-separate-Bahir-module-or-Incubator-project-td44064.html > > >> > > >> - > > >> Denis > > >> > > >> > > >> On Sat, Jan 11, 2020 at 10:44 AM Николай Ижиков <nizhi...@apache.org> > wrote: > > >> > > >>> Hello, Igniters. > > >>> > > >>> During Ignite meetup I took part in there was a request from the > users. > > >>> They propose to create a custom spring boot autoconfigurer module for > > >>> Ignite. > > >>> This module should provide a smooth injection of Ignite to any > spring-boot > > >>> application. > > >>> > > >>> I've implemented a tiny straightforward prototype of the module [1] > > >>> Examples of the usage of integration can be found in the example > > >>> application [2] > > >>> > > >>> For now, the module provides the following features: > > >>> > > >>> 1. Starts Ignite node and inject it in the spring ApplicationContext > if > > >>> bean of the type IgniteConfiguration exists in the context. > > >>> This can be achieved in two ways: > > >>> * create `IgniteConfiguration` from java code [3] > > >>> * add `ignite.xml` file to the application context [4] > > >>> > > >>> 2. Starts IgniteClient instance and injects it int the spring > Application > > >>> if: > > >>> * ClientConfiguration bean exists in the context [5] > > >>> * `spring.data.ignite.clientAddresses` exists in the application > > >>> properties. [6] > > >>> > > >>> I have a following questions regards new module: > > >>> > > >>> 1. We have an extension initiative so where is the right place for > the > > >>> new module? > > >>> 2. Do we have spring experts in the community? What other features > for > > >>> this autoconfigurer module required? > > >>> > > >>> [1] https://github.com/apache/ignite/pull/7237/files > > >>> [2] > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example > > >>> [3] > > >>> > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/configfrombean > > >>> [4] > > >>> > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/configfromfile > > >>> [5] > > >>> > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/thinclientfrombean > > >>> [6] > > >>> > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/thinclientfromconfig > > >>> > > >>> > > > > > > >