demos/kafka/wordcount
5 months agoWIP:popular: 1.0.0 - Renamed packages and classes -- MOVE
Kai Moritz [Sat, 15 Jun 2024 12:48:55 +0000 (14:48 +0200)]
WIP:popular: 1.0.0 - Renamed packages and classes -- MOVE

5 months agoWIP:popular: 1.0.0 - Renamed packages and classes -- MOVE
Kai Moritz [Sat, 15 Jun 2024 12:46:47 +0000 (14:46 +0200)]
WIP:popular: 1.0.0 - Renamed packages and classes -- MOVE

5 months agopopular: 1.0.0 - Renamed packages and classes -- MOVE
Kai Moritz [Sat, 15 Jun 2024 12:42:52 +0000 (14:42 +0200)]
popular: 1.0.0 - Renamed packages and classes -- MOVE

5 months agopopular: 1.0.0 - Renamed the project to `popular`
Kai Moritz [Sat, 15 Jun 2024 11:39:26 +0000 (13:39 +0200)]
popular: 1.0.0 - Renamed the project to `popular`

5 months agoquery: 2.0.0 - (GREEN) Explicitly specifed the missing serde-config
Kai Moritz [Sat, 15 Jun 2024 05:34:30 +0000 (07:34 +0200)]
query: 2.0.0 - (GREEN) Explicitly specifed the missing serde-config

5 months agoquery: 2.0.0 - (RED) The keys of the top10-topic are deserialized as JSON
Kai Moritz [Fri, 14 Jun 2024 18:39:41 +0000 (20:39 +0200)]
query: 2.0.0 - (RED) The keys of the top10-topic are deserialized as JSON

* The seemingly straightforward change leds to a very strange and
  inconsisten error-situation.
* Only the integration-test fails, while the topology-test works as
  originally expected.
* The cause of the error is a missing serde-config for the key of the
  ``rankings``-``KStream``, which defies easy explanation.
* The best explanation is, that the ``map()``-operation - despite
  possibly changing the type of the key and/or value - does not by itself
  define a parameter for specifing a corresponding serialization-config.
* The reason for this is, that the operation does not define the complete
  operation by itself.
* In order to take effect, it has to be combined with a second operation,
  that actually creates the outgoing topic.
* Without that second DSL-operation, `map()` simply would yield no action.
* And that is, why the serialization has to be defined on that second
  operation and cannot be defined on `map()` itself.
* But the really strange thing about the error is, that it _only_ shows up
  in `QueryApplicationIT`.
* It does not show in `QueryStreamProcessorTopologyTest` _and_ it does
  _not_ show up, if the application is compiled and started in the
  docker-setup.
* One possible explanation for this wired behaviour might be a bug or
  misconception in the interpretation of the beforehand build topology,
  that leads to a non-deterministic behaviour.
* Another possible explanation might be subtle differences in the internal
  caching behaviour -- but that seems unlikely, because tests, that are
  based on the `TopologyTestDriver` do not cache and are very (on the oposit)
  very handy if one wants to reveal bugs concerning the serialization and
  and running the application with the caching settings from the IT does
  not show the error.

5 months agoquery: 2.0.0 - (GREEN) Adjusted the implementation to the new expectations
Kai Moritz [Wed, 12 Jun 2024 21:08:57 +0000 (23:08 +0200)]
query: 2.0.0 - (GREEN) Adjusted the implementation to the new expectations

* Messages from the incomming topic, that is written by the `users` service
  can be serialized, although no type-information is conveyed via the
  headers.

5 months agoquery: 2.0.0 - (RED) Corrected expectations for the ``users``-input-topic
Kai Moritz [Wed, 12 Jun 2024 21:08:57 +0000 (23:08 +0200)]
query: 2.0.0 - (RED) Corrected expectations for the ``users``-input-topic

* The messages that are written by the `users` service doese _not_ contain
  any type-information.
* This commits corrects the corresponding expectations in the test-cases.
* *RED:* The tests fail, because the implementation was not yet fixed!

5 months agoquery: 2.0.0 - `QueryApplicationIT` uses two ``KafkaTemplate``s
Kai Moritz [Wed, 12 Jun 2024 21:08:57 +0000 (23:08 +0200)]
query: 2.0.0 - `QueryApplicationIT` uses two ``KafkaTemplate``s

* Switched the setup of the `QueryApplicationIT` to use two different
  instances  of `KafkaTemplate` for the two input-topics.
* This is a preparation for the introduction of the typed JSON-keys.

5 months agoquery: 2.0.0 - Refined the Lombok-Annotations for the model-classes
Kai Moritz [Tue, 11 Jun 2024 20:53:11 +0000 (22:53 +0200)]
query: 2.0.0 - Refined the Lombok-Annotations for the model-classes

5 months agoquery: 2.0.0 - Configured caching & commit-interval in integration-test
Kai Moritz [Wed, 12 Jun 2024 20:46:24 +0000 (22:46 +0200)]
query: 2.0.0 - Configured caching & commit-interval in integration-test

* Introduced configuration-parameters for caching and the commit-interval.
* Explicitly turned of caching in the integration-test.
* Explicitly set the commit-interval to a very short period (100ms) in the
  integration-test.

5 months agoquery: 2.0.0 - Defined 2 state-stores (all state in-memory in tests)
Kai Moritz [Wed, 12 Jun 2024 20:46:24 +0000 (22:46 +0200)]
query: 2.0.0 - Defined 2 state-stores (all state in-memory in tests)

* Introduced a second state-store to store the incomming users-table.
* Without the explicit definition of the state-store, it is _not_ possible,
  to reconfigure the integration-test in such a way, taht it does not
  store its state locally on disk.

5 months agoquery: 2.0.0 - Values are serialized as JSON
Kai Moritz [Tue, 11 Jun 2024 18:41:30 +0000 (20:41 +0200)]
query: 2.0.0 - Values are serialized as JSON
--
works, still startling, but explainable

* Splitting the command ``table()``, that reads the input-topic and
  materializes it as ``KTable()``, into the two statements ``stream()``,
  that reads the input-topic into a ``KStream``, and ``toTable()``, that
  turns the `KStream` into a ``KTable``, the ``JsonSerde``, that is
  specified via ``Consumed.with(..)``, is only used for the serialization
  and deserialization concerning the ``KTable`` -- not the deserialization
  of the values, that are read from the input-topic.
* Hence, the type-mappings does not have to be specified for the
  ``JsonSerde``, resulting in better understandable code.
* __Note__, that the resulting topology does not differe, because the
  DSL is able to combine the effects of the two statements.

5 months agoquery: 2.0.0 - Values are serialized as JSON
Kai Moritz [Tue, 11 Jun 2024 18:36:58 +0000 (20:36 +0200)]
query: 2.0.0 - Values are serialized as JSON
--
works, but is very confusing

* The default-type is specified as a consumption-parameter in the command,
  that reads the input topic into the `KTable` via ``Consumed.with(..)``.
* The resulting code is confusing, because the ``Consumed``-parameter is
  used for both, the consumption of the input topic _and_ the consumption
  of stored values, if read from the state-store.
* Because of this, one might only think of the consumption of the stored
  values from the state-store, when looking at the ``Consumed.with()``-
  statement, and argue, why the type-mappings have to be specified here.

5 months agoquery: 2.0.0 - (GREEN) Values are serialized as JSON
Kai Moritz [Sun, 9 Jun 2024 18:44:35 +0000 (20:44 +0200)]
query: 2.0.0 - (GREEN) Values are serialized as JSON
--
works __only__, if a default-type is defined

* The default-type is needed, to deserialized values that are read from the
  state-store.
* Without it, the deserialization fails, because not type-information is
  available.
* The type-information gets lost, when the values are stored in the state-
  store, because the message-headers are _not_ stored along with the value!

5 months agoquery: 2.0.0 - (RED) Formulated expectations for JSON-values
Kai Moritz [Sun, 9 Jun 2024 18:44:35 +0000 (20:44 +0200)]
query: 2.0.0 - (RED) Formulated expectations for JSON-values

5 months agoquery: 1.0.6 - Added IT, that queries the expected state
Kai Moritz [Sun, 9 Jun 2024 17:48:33 +0000 (19:48 +0200)]
query: 1.0.6 - Added IT, that queries the expected state

5 months agoquery: 1.0.6 - Refactored `TestData.assertExpectedState()`
Kai Moritz [Sun, 9 Jun 2024 17:35:22 +0000 (19:35 +0200)]
query: 1.0.6 - Refactored `TestData.assertExpectedState()`

5 months agoquery: 1.0.6 - Added `QueryApplicationIT`
Kai Moritz [Sun, 9 Jun 2024 15:03:59 +0000 (17:03 +0200)]
query: 1.0.6 - Added `QueryApplicationIT`

5 months agoquery: 1.0.6 - Added `QueryStreamProcessorTopologyTest`
Kai Moritz [Sun, 9 Jun 2024 10:09:49 +0000 (12:09 +0200)]
query: 1.0.6 - Added `QueryStreamProcessorTopologyTest`

5 months agoquery: 1.0.6 - Refined `QueryApplicationConfiguration`
Kai Moritz [Sun, 9 Jun 2024 10:41:01 +0000 (12:41 +0200)]
query: 1.0.6 - Refined `QueryApplicationConfiguration`
--
the state-store is configurable through a store-suplier

5 months agoquery: 1.0.6 - Refined `QueryStreamProcessor`
Kai Moritz [Sun, 9 Jun 2024 09:06:20 +0000 (11:06 +0200)]
query: 1.0.6 - Refined `QueryStreamProcessor`
--
moved the building of the toplogy into a separate (static) method

5 months agoquery: 1.0.6 - Refined `QueryStreamProcessor`
Kai Moritz [Sun, 9 Jun 2024 08:52:25 +0000 (10:52 +0200)]
query: 1.0.6 - Refined `QueryStreamProcessor`
--
store name is a constant

5 months agoquery: 1.0.6 - Refined `QueryApplicationConfiguration`
Kai Moritz [Sun, 9 Jun 2024 08:29:23 +0000 (10:29 +0200)]
query: 1.0.6 - Refined `QueryApplicationConfiguration`
--
moved lifecycle-handling of the streams-processor into the config-class

5 months agoquery: 1.0.6 - Refined `QueryApplicationConfiguration`
Kai Moritz [Sun, 9 Jun 2024 08:23:37 +0000 (10:23 +0200)]
query: 1.0.6 - Refined `QueryApplicationConfiguration`
--
separated the serialization-config into a static method

5 months agoquery: 1.0.6 - Refined `QueryAppilcationConfiguration`
Kai Moritz [Sun, 9 Jun 2024 08:15:10 +0000 (10:15 +0200)]
query: 1.0.6 - Refined `QueryAppilcationConfiguration`
--
moved the creation of the streams-config into the config-class

5 months agoquery: 1.0.6 - Refined `QueryAppilcationConfiguration`
Kai Moritz [Sun, 9 Jun 2024 08:07:49 +0000 (10:07 +0200)]
query: 1.0.6 - Refined `QueryAppilcationConfiguration`
--
separated detection of correct `HostInfo` into a separate ``@Bean``-method

5 months agoquery: 1.0.6 - Refined naming in `QueryApplicationConfiguration`
Kai Moritz [Sun, 9 Jun 2024 07:46:54 +0000 (09:46 +0200)]
query: 1.0.6 - Refined naming in `QueryApplicationConfiguration`
--
streamlined the naming of attributes and parameters

5 months agoquery: 1.0.6 - Separated config in `Top10ApplicationConfiguration` -- ALIGN
Kai Moritz [Sun, 9 Jun 2024 07:29:12 +0000 (09:29 +0200)]
query: 1.0.6 - Separated config in `Top10ApplicationConfiguration` -- ALIGN

5 months agoquery: 1.0.6 - Separated config in `QueryApplicationConfiguration` -- COPY
Kai Moritz [Sun, 9 Jun 2024 07:28:51 +0000 (09:28 +0200)]
query: 1.0.6 - Separated config in `QueryApplicationConfiguration` -- COPY

5 months agoquery: 1.0.6 - top10: 1.1.1 - Upgraded Java & Kafka
Kai Moritz [Sun, 9 Jun 2024 10:09:18 +0000 (12:09 +0200)]
query: 1.0.6 - top10: 1.1.1 - Upgraded Java & Kafka

6 months agoquery: 1.0.5 - Updated Spring Boot to `3.2.5` query-1.0.5
Kai Moritz [Sun, 5 May 2024 09:10:36 +0000 (11:10 +0200)]
query: 1.0.5 - Updated Spring Boot to `3.2.5`

3 years agoquery: 1.0.4 - changed default-port and exposed all actuator-endpoints query-1.0.4
Kai Moritz [Sat, 16 Oct 2021 14:36:01 +0000 (16:36 +0200)]
query: 1.0.4 - changed default-port and exposed all actuator-endpoints

3 years agoquery: 1.0.3 - application.server is derived from the local address query-1.0.3
Kai Moritz [Sat, 16 Oct 2021 14:34:54 +0000 (16:34 +0200)]
query: 1.0.3 - application.server is derived from the local address

3 years agoquery:1.0.2 - Fixed responses for availability edge-cases query-1.0.2
Kai Moritz [Sat, 4 Sep 2021 15:35:53 +0000 (17:35 +0200)]
query:1.0.2 - Fixed responses for availability edge-cases

* No invalid redirect, if the host-info ist not available
* 503 Service Temporarily Unavailable, while streams is not ready

3 years agoquery:1.0.1 - Rankings are enriched with user-data query-1.0.1
Kai Moritz [Sat, 4 Sep 2021 10:23:57 +0000 (12:23 +0200)]
query:1.0.1 - Rankings are enriched with user-data

3 years agoquery:1.0.0 - Query rankings by username query-1.0.0
Kai Moritz [Thu, 2 Sep 2021 05:15:37 +0000 (07:15 +0200)]
query:1.0.0 - Query rankings by username

3 years agotop10:1.0.0 - ranks first 10 mostly used words, keyed by user top10-1.0.0
Kai Moritz [Sat, 4 Sep 2021 15:20:44 +0000 (17:20 +0200)]
top10:1.0.0 - ranks first 10 mostly used words, keyed by user

3 years agowordcount:1.0.0 - counts words, keyed by username and word counter-1.0.0
Kai Moritz [Wed, 1 Sep 2021 20:31:01 +0000 (22:31 +0200)]
wordcount:1.0.0 - counts words, keyed by username and word