demos/kafka/wordcount
13 days agoquery: 2.0.1 - (GREEN) Adjusted implementation to corrected expectations query-2.0.1
Kai Moritz [Sun, 16 Jun 2024 19:38:51 +0000 (21:38 +0200)]
query: 2.0.1 - (GREEN) Adjusted implementation to corrected expectations

13 days agoquery: 2.0.1 - (RED) Corrected expectations for JSON in input-messages
Kai Moritz [Sun, 16 Jun 2024 19:35:58 +0000 (21:35 +0200)]
query: 2.0.1 - (RED) Corrected expectations for JSON in input-messages

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

13 days 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.

2 weeks 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.

2 weeks 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!

2 weeks 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.

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

2 weeks 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.

2 weeks 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.

2 weeks 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.

2 weeks 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.

2 weeks 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!

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

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

2 weeks 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()`

2 weeks 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`

2 weeks 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`

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

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

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

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

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

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

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

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

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

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

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

8 weeks 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`

2 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

2 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

2 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

2 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

2 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

2 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

2 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