Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2tcjCZ0.
Peter Lawrey explains the use cases and practicalities for having downstream services consuming all of the state changes of an upstream service in order to provide automated, real-time insight of services. Filmed at qconlondon.com.
Peter Lawrey likes to inspire developers to improve the craftsmanship of their solutions, engineer their systems for simplicity and performance, and enjoy their work more by being creative and innovative. He is lead developer of the OpenHFT project which includes support for off heap memory, thread pinning and low latency persistence and IPC (as low as 100 nano-seconds).
1. Peter Lawrey – Chronicle Software
QCon London - 2017
Observability, Event Sourcing
and State Machines
2. InfoQ.com: News & Community Site
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
observability-event-sourcing
• Over 1,000,000 software developers, architects and CTOs read the site world-
wide every month
• 250,000 senior developers subscribe to our weekly newsletter
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• 2 dedicated podcast channels: The InfoQ Podcast, with a focus on
Architecture and The Engineering Culture Podcast, with a focus on building
• 96 deep dives on innovative topics packed as downloadable emags and
minibooks
• Over 40 new content items per week
3. Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon London
www.qconlondon.com
32. Testing multiple components
We can mock the output listener of our component.
// what we expect to happen
OrderListener listener = createMock(OrderListener.class);
listener.onOrder(new Order("EURUSD", Side.Buy, 1.1167, 1_000_000));
replay(listener);
// build our scenario
OrderManager orderManager =
new OrderManager(listener);
SidedMarketDataCombiner combiner =
new SidedMarketDataCombiner(orderManager);
33. Testing multiple components
// events in: not expected to trigger
orderManager.onOrderIdea(
new OrderIdea("EURUSD", Side.Buy, 1.1180, 2e6));
combiner.onSidedPrice(
new SidedPrice("EURUSD", 123456789000L, Side.Sell, 1.1172, 2e6));
combiner.onSidedPrice(
new SidedPrice("EURUSD", 123456789100L, Side.Buy, 1.1160, 2e6));
combiner.onSidedPrice(
new SidedPrice("EURUSD", 123456789100L, Side.Buy, 1.1167, 2e6));
// expected to trigger
orderManager.onOrderIdea(
new OrderIdea("EURUSD", Side.Buy, 1.1165, 1e6));
verify(listener);