Most Kafka Consumer tutorials use a synchronous poll-then-process loop that is not ideal. Worse yet, it gives developers the wrong impression about how Kafka works. We look at a better model to understand and implement Kafka Consumers, which also supports back pressure and parallel processing.
Reindexing data is a common operation in working with Elasticsearch. However, existing solutions are purely about data and thus limited in applicability. By taking application code into account, we come up with a generic, eventually consistent, zero downtime solution to reindex data in ElasticSearch.
Sometimes, we need guarantees about the values in our program beyond what can be accomplished with the usual type system checks. Smart Constructors is one solution for this. We look at various ways to implement Smart Constructors in Scala and analyze their pros and cons.