You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Николай Ижиков <ni...@apache.org> on 2020/01/11 18:44:36 UTC

Ignite-spring-boot-autoconfigurer

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


Re: Ignite-spring-boot-autoconfigurer

Posted by Saikat Maitra <sa...@gmail.com>.
Hi Nikolay,

Here is the release process docs for Ignite [1]

We do not have docs specific to Ignite Extensions, we will need to create
docs for Ignite Extensions.

Please find discussion on release process below [2]

Regards,
Saikat

[1]  https://cwiki.apache.org/confluence/display/IGNITE/Release+Process
[2]
http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-dependencies-and-release-process-for-Ignite-Extensions-td44478.html


On Tue, Jan 28, 2020 at 8:13 AM Nikolay Izhikov <ni...@apache.org> wrote:

> Merged to master [1]
>
> Igniters, I want to release both modules I added.
> Do we have documentation, how it should be done for ignite-extensions?
>
> [1]
>
> https://github.com/apache/ignite-extensions/commit/575ec510e4d48b1e0c2ec7e4cf8d596e7de82f70
>
> пн, 27 янв. 2020 г. в 13:06, Nikolay Izhikov <ni...@apache.org>:
>
> > Hello, Alexey Kuznetsov.
> >
> > I have two approvals from Saikat Maitra and Maxim Stepachov.
> > I have plans to merge spring-boot autoconfigure modules to
> > ignite-extensions. [1]
> > Do you want to perform additional review?
> >
> > [1] https://github.com/apache/ignite-extensions/pull/6
> >
> > пт, 24 янв. 2020 г. в 07:41, Saikat Maitra <sa...@gmail.com>:
> >
> >> Hi Nikolay,
> >>
> >> Thank you for updating the PR, the changes looks good.
> >>
> >> Regards,
> >> Saikat
> >>
> >> On Wed, Jan 22, 2020 at 1:33 PM Николай Ижиков <ni...@apache.org>
> >> wrote:
> >>
> >> > Hello, Saikat.
> >> >
> >> > Thank you so much for the review.
> >> >
> >> > I answered your questions and resolve all the comments.
> >> > Please, take a look, one more time.
> >> >
> >> > > 22 янв. 2020 г., в 07:58, Saikat Maitra <sa...@gmail.com>
> >> > написал(а):
> >> > >
> >> > > 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 Николай Ижиков <nizhikov@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 <sa...@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 Николай Ижиков <
> nizhikov@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.dev@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 <dm...@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 Николай Ижиков <
> >> nizhikov@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
> >> > >>>>>>
> >> > >>>>>>
> >> > >>>>
> >> > >>>
> >> > >>
> >> > >>
> >> >
> >> >
> >>
> >
>

Re: Ignite-spring-boot-autoconfigurer

Posted by Nikolay Izhikov <ni...@apache.org>.
Merged to master [1]

Igniters, I want to release both modules I added.
Do we have documentation, how it should be done for ignite-extensions?

[1]
https://github.com/apache/ignite-extensions/commit/575ec510e4d48b1e0c2ec7e4cf8d596e7de82f70

пн, 27 янв. 2020 г. в 13:06, Nikolay Izhikov <ni...@apache.org>:

> Hello, Alexey Kuznetsov.
>
> I have two approvals from Saikat Maitra and Maxim Stepachov.
> I have plans to merge spring-boot autoconfigure modules to
> ignite-extensions. [1]
> Do you want to perform additional review?
>
> [1] https://github.com/apache/ignite-extensions/pull/6
>
> пт, 24 янв. 2020 г. в 07:41, Saikat Maitra <sa...@gmail.com>:
>
>> Hi Nikolay,
>>
>> Thank you for updating the PR, the changes looks good.
>>
>> Regards,
>> Saikat
>>
>> On Wed, Jan 22, 2020 at 1:33 PM Николай Ижиков <ni...@apache.org>
>> wrote:
>>
>> > Hello, Saikat.
>> >
>> > Thank you so much for the review.
>> >
>> > I answered your questions and resolve all the comments.
>> > Please, take a look, one more time.
>> >
>> > > 22 янв. 2020 г., в 07:58, Saikat Maitra <sa...@gmail.com>
>> > написал(а):
>> > >
>> > > 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 Николай Ижиков <ni...@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 <sa...@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 Николай Ижиков <nizhikov@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <
>> nizhikov@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
>> > >>>>>>
>> > >>>>>>
>> > >>>>
>> > >>>
>> > >>
>> > >>
>> >
>> >
>>
>

Re: Ignite-spring-boot-autoconfigurer

Posted by Nikolay Izhikov <ni...@apache.org>.
Hello, Alexey Kuznetsov.

I have two approvals from Saikat Maitra and Maxim Stepachov.
I have plans to merge spring-boot autoconfigure modules to
ignite-extensions. [1]
Do you want to perform additional review?

[1] https://github.com/apache/ignite-extensions/pull/6

пт, 24 янв. 2020 г. в 07:41, Saikat Maitra <sa...@gmail.com>:

> Hi Nikolay,
>
> Thank you for updating the PR, the changes looks good.
>
> Regards,
> Saikat
>
> On Wed, Jan 22, 2020 at 1:33 PM Николай Ижиков <ni...@apache.org>
> wrote:
>
> > Hello, Saikat.
> >
> > Thank you so much for the review.
> >
> > I answered your questions and resolve all the comments.
> > Please, take a look, one more time.
> >
> > > 22 янв. 2020 г., в 07:58, Saikat Maitra <sa...@gmail.com>
> > написал(а):
> > >
> > > 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 Николай Ижиков <ni...@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 <sa...@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 Николай Ижиков <ni...@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <
> nizhikov@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
> > >>>>>>
> > >>>>>>
> > >>>>
> > >>>
> > >>
> > >>
> >
> >
>

Re: Ignite-spring-boot-autoconfigurer

Posted by Saikat Maitra <sa...@gmail.com>.
Hi Nikolay,

Thank you for updating the PR, the changes looks good.

Regards,
Saikat

On Wed, Jan 22, 2020 at 1:33 PM Николай Ижиков <ni...@apache.org> wrote:

> Hello, Saikat.
>
> Thank you so much for the review.
>
> I answered your questions and resolve all the comments.
> Please, take a look, one more time.
>
> > 22 янв. 2020 г., в 07:58, Saikat Maitra <sa...@gmail.com>
> написал(а):
> >
> > 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 Николай Ижиков <ni...@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 <sa...@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 Николай Ижиков <ni...@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <nizhikov@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
> >>>>>>
> >>>>>>
> >>>>
> >>>
> >>
> >>
>
>

Re: Ignite-spring-boot-autoconfigurer

Posted by Николай Ижиков <ni...@apache.org>.
Hello, Saikat.

Thank you so much for the review.

I answered your questions and resolve all the comments.
Please, take a look, one more time.

> 22 янв. 2020 г., в 07:58, Saikat Maitra <sa...@gmail.com> написал(а):
> 
> 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 Николай Ижиков <ni...@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 <sa...@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 Николай Ижиков <ni...@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <ni...@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
>>>>>> 
>>>>>> 
>>>> 
>>> 
>> 
>> 


Re: Ignite-spring-boot-autoconfigurer

Posted by Saikat Maitra <sa...@gmail.com>.
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 Николай Ижиков <ni...@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 <sa...@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 Николай Ижиков <ni...@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <ni...@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
> > >>>
> > >>>
> > >
> >
>
>

Re: Ignite-spring-boot-autoconfigurer

Posted by Николай Ижиков <ni...@apache.org>.
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 <sa...@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 Николай Ижиков <ni...@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <ni...@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
> >>> 
> >>> 
> > 
> 


Re: Ignite-spring-boot-autoconfigurer

Posted by Saikat Maitra <sa...@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 Николай Ижиков <ni...@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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <ni...@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
> >>>
> >>>
> >
>
>

Re: Ignite-spring-boot-autoconfigurer

Posted by Николай Ижиков <ni...@apache.org>.
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, Николай Ижиков <ni...@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 <dm...@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 Николай Ижиков <ni...@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
>>> 
>>> 
> 


Re: Ignite-spring-boot-autoconfigurer

Posted by Николай Ижиков <ni...@apache.org>.
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 <dm...@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 Николай Ижиков <ni...@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
>> 
>> 


Re: Ignite-spring-boot-autoconfigurer

Posted by Denis Magda <dm...@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 Николай Ижиков <ni...@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
>
>