Apache Kafka vs Kafka Streams - apache-kafka

When I create a Spring Project on the selected dependencies screen under the Messaging section I see Spring for Apache Kafka and Spring for Apache Kafka Streams. What is the difference between these two?

Related

How to share spring context with apache beam tranform?

Can Apache Beam Pipeline have spring context?
Can Transform use spring JPA repository to fetch the data from database?
How to share spring context with each transform in apache beam

http4s configuration from spring cloud config server

We have a rest microservice developed using scala http4s. We want to externalize configuration for this microservice like we do in spring boot ecosystem.
Can this be done in Scala Http4s where they can refer a spring cloud config server? Is there any other to do in Scala?

Spring Kafka 1.3.9.RELEASE and apache kafka client 1.1.1 compatibility

I was using Spring Kafka 1.3.8 version with apache kafka client 0.11.0.2. Since my broker is getting upgraded to 1.1.1 version, I would like to upgrade my kafka-clients to 1.1.1 version to avoid down conversions. Is Spring Kafka 1.3.9 is compatible with kafka-clients to 1.1.1? Or Should I upgrade to 2.x versions of Spring Kafka, could someone help?

Spring Boot, Spring-Kafka, and Spring-Cloud compatibility

My question is about Spring-Kafka and Spring Cloud compatibility.
I am using the following versions:
Kafka Broker 1.0.2
Spring Boot 1.5.2
Spring Kafka 1.2.2
Spring Cloud Stream Chelsea.SR2 (Spring Cloud Stream
Core 1.2.2.RELEASE)
The compatibility between Spring-Kafka and Spring Boot was asked in a different SO question a few days ago. The Spring-Kafka project page was updated with more details about the compatibility. The project site states the following:
All users with brokers >= 0.10.x.x (and all spring boot 1.5.x users) are recommended to use spring-kafka version 1.3.x
The compatibility matrix for Spring Cloud Stream and Spring-Kafka states that:
Spring Cloud Stream 1.2.x is compatible with Spring-Kafka 1.2.x, 1.1.x.
The Spring-Kafka project page recommends me to upgrade to 1.3.X, but my version of Spring Cloud Stream is no compatible with Spring-Kafka 1.3.X.
I would prefer to upgrade my Spring-Kafka version to 1.3.8. But I do not want to break Spring Cloud Stream.
Does anyone have experience with using a newer version of Spring-Kafka with an older version of Spring Cloud Stream?
Spring Boot 1.5.2 is extremely old (early 2017). The current Boot 1.5.x version is 1.5.18 (released today).
If you start a new Spring Boot 1.5 project using Initializr You get
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.18.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR5</spring-cloud.version>
<spring-kafka.version>1.3.8.RELEASE</spring-kafka.version>
</properties>
Edgware.SR5 pulls in the Ditmars Spring Cloud Stream release train (1.3.3) and, as you can see, spring-kafka 1.3.8 is used too.
So I would recommend you upgrade everything to get current.

Spring support for Apache Geode (spring-data-geode)

Could you please tell where to find out spring-data packages for Apache Geode? There is a spring-data-gemfire project that produces regular releases for Pivotal Gemfire. spring-data-geode is supposed to be a part of this project but I am not able to find out any information about. There is just one artifact with version 1.0.0.INCUBATING-RELEASE in Maven Central.
Thanks in advance,
Vadim
Excellent question!
There is a Spring Data Geode project, and you are correct, the latest version of Spring Data Geode is 1.0.0.INCUBATING-RELEASE (as seen in Maven Central). That particular version of SD Geode is based on Apache Geode 1.0.0-incubating, matching on version so users are clear which version of Apache Geode they get when declaring a dependency on SD Geode.
Being the Spring Data Geode project lead, I am acutely aware that Apache Geode released a 1.1.0 version at the end of February with a follow up 1.1.1 patch release in March (see Releases on the Apache Geode page).
Additionally, it has been sometime since I have cut a new release of Spring Data Geode to match the current version of Apache Geode (i.e. 1.1.1). There are several reasons for this...
First, I am in the process of enhancing Spring Data Geode's new Annotation-based configuration model (Spring Boot style) to allow for dynamic configuration of key Annotation attributes (think port numbers used between clients and servers for instance) when using the Annotations while still preserving the strongly-typed nature of the attributes (i.e. not all Strings). In a nutshell, I am accomplishing this with a standard convention often used in Spring, "Configurers", as well as "well-known and documented" properties rather than my previous intention (Property Placeholders and SpEL Expressions in Annotation attributes, which then would require them to be Strings, yuck).
NOTE: The beginnings of this new Annotation model in SD Geode and GemFire was described in 1 of my blogs. A subsequent follow-up blog entry specifically covered Annotation support for Geode's new Integrated Security Framework.
Second, I added support in SD Geode for Apache Geode's Lucene Integration.
Lastly, Spring Data Geode used to exist in the apache-geode branch in the Spring Data GemFire's GitHub Repository. However, since the last SD Geode release (i.e. 1.0.0.INCUBATING-RELEASE), #Oliver Gierke (Spring Data Team Lead) has agreed to make Spring Data Geode a top-level Spring Data project, like Spring Data GemFire, and so, Spring Data Geode will join the Spring Data Release Train, hopefully in the next Spring Data Kay Milestone 4 (M4) release. However, this depends entirely on the upcoming Apache Geode 1.2.0 release being released, first. As you can see, there is already a dedicated GitHub Repository specifically for the Spring Data Geode project now.
NOTE: While all my doc references here have been to Spring Data GemFire, they equally apply to Spring Data Geode, especially as of the Spring Data GemFire 2.0.0 Milestone releases (SD Kay) since SD GemFire is based on Pivotal GemFire 9.x, which is based on Apache Geode 1.0.0-incubating.
This means several things...
First, and most importantly, Spring Data Geode will have its own spring.io project page (under Spring Data) and its own documentation, separate from Spring Data GemFire, identifying it as separate/individual and proper Spring Data project.
Second, there are many things changing in Spring Data... alignment with Java 8, core Spring Framework 5 for Reactive/Functional architectures and significant changes in Spring Data itself. See the "core themes" in SD Kay for more details. As such, Spring Data Geode based on Apache Geode 1.2.0 will be at version 2.0.0 (unlike Apache Geode), therefore, the version numbers between Spring Data Geode and Apache Geode going forward will no longer align.
However, on positive note, once in place, Spring Data Geode will move at a predictable release cadence along with the rest of the Spring Data modules, including Spring Data GemFire. This means there will be a transition period to get all the bits in order though, and hence this seemingly gap in Spring support for the latest version of Apache Geode (i.e. 1.1.1).
Having said that, I am still planning to release 1 more individual Spring Data Geode release (i.e. 1.1.1.RELEASE) based Apache Geode 1.1.1, hopefully soon.
In the interim, you can use the Spring Data Geode 1.0.0.INCUBATING-RELEASE with the latest version of Apache Geode (i.e. 1.1.1) without incident by simply including the SD Geode 1.0.0.INCUBATING-RELEASE dependency and declaring a direct dependency on Apache Geode 1.1.1, which will override the version of Apache Geode pulled in by SD Geode, in your application POM file like so...
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-geode</artifactId>
<version>1.0.0.INCUBATING-RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.geode</groupId>
<artifactId>geode-core</artifactId>
<version>1.1.1</version>
</dependency>
<!-- along with any other geode dependencies you need -->
Anyway, hope this helps and I am sorry about the delay; juggling many priorities at the moment.
Cheers,
John