Uploaded image for project: 'Spring Data GemFire'
  1. Spring Data GemFire
  2. SGF-377

Explore Reactive extensions and support for applicable Pivotal GemFire capabilities.

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

    XMLWordPrintable

Details

    Description

      This is a R&D task to explore possible Reactive extensions and support for applicable Pivotal GemFire capabilities.

      Initially, this JIRA ticket was opened to explore whether it was possible to...

      Implement the Reactive Streams API for Pivotal GemFire's CQ Support.

      For example, Pivotal GemFire's [Continuous Query
      (CQ)|http://gemfire.docs.pivotal.io/latest/userguide/index.html#developing/continuous_querying/chapter_overview.html] would be a good fit to implement the Reactive Streams API, using Reactor or RxJava backed by CQs, and wrapping a CQ Listener with Reactive types (e.g. Flux).

      I also think it makes sense to explore additional Pivotal GemFire features that may be possible to wrap with Reactive types and behavior, including, but not necessarily limited to:

      1. AEQ (Listener)
      2. CQ
      3. Function Execution (by first adding support for Streaming Results)
      4. From Repositories
      5. Etc.

      Function Executions is perhaps less apparent in its path to Reactive, but if there were a fire-and-forget (i.e. async) method to invoke a Function, then it would be possible to execute a Function in a Reactive context. I think wrapping the ResultCollector would give you that async/Reactive-like behavior. Additionally, a StreamResultCollector implementation could be wrapped with a Flux.

      Additional thoughts and ideas will be added in comments.

      Attachments

        Activity

          People

            jblum John Blum
            jblum John Blum
            Archiver:
            tmarshall Trevor Marshall
            John Blum John Blum

            Dates

              Created:
              Updated:
              Archived:

              Time Tracking

                Estimated:
                Original Estimate - 15d
                15d
                Remaining:
                Remaining Estimate - 15d
                15d
                Logged:
                Time Spent - Not Specified
                Not Specified