Summary
In this chapter, we used event-carried state transfer to decouple modules. Modules such as Store Management and Customers were made into event producers to improve the independence of the modules by allowing them to use locally cached data, avoiding a blocking gRPC call to retrieve it. We also expanded the state that is being shared in the application. Asynchronous messaging APIs can and should be documented like synchronous APIs, and we were introduced to a couple of tools that make the task easier.
We also added a new module to add advanced search capabilities to the application. This new module utilized events from several other modules to build a new read model that can be queried in multiple different ways.
We still have some synchronous calls that we did not touch. These calls will be the focus of our next chapter, Chapter 8, Message Workflows. In that chapter, we will look at how we can send more than events, and we will send commands to other modules so that they...