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
> >>> 
> >>> 
> > 
> 

Reply via email to