
Write information about sent data to a business logĪs usual, there are many technical challenges to solve.Sending the data to the target hotel ads platform.Converting the data to a different format required by the target hotel ads platform.

Reading price data for the target hotel ads platform from a Kafka topic.Hence, we dive into one of our microservices that is responsible for: In this article, we are not going to focus on the overall architecture and the details of the business problem, but rather the technical aspects of our implementation. In order to achieve this, trivago’s search backend engineering team had to develop a solution to serve available prices from our own platform to other hotel ads platforms. One of trivago’s initiatives is about the presence on these platforms. Such platforms provide an API to enable businesses to connect to their backend services and to provide inventory and pricing to be advertised on the target platform. In addition to our own platform, we are also present on other hotel ads platforms such as Google Hotel Ads. Trivago is known for its hotel search product which enables our users to compare millions of accommodations and prices worldwide. Some references to recommended learning resources are provided in the conclusions. Since there are already plenty of good resources available to learn and understand the fundamental concepts of reactive programming, this article doesn’t cover the fundamentals of reactive programming and presumes intermediate knowledge of the same topic. Key aspects of our implementation and how they addressed the challenges.The technical challenges we faced during development.Presenting one of our real-world use-cases running reliably in production for over a year.The article focuses on the following key aspects:

The benefits we gain support us in some key challenges that every engineer is facing with essentially every (micro-) service in today’s backend architectures: handling of blocking IO, backpressure, managing highly varying loads as well as message and error propagation. Compared to traditional imperative and functional programming, reactive programming requires a mindset-shift in order to apply the concepts and techniques effectively. This article presents how trivago's search backend team used reactive programming in Java effectively when designing and implementing one of our many Java backend services.
