Trong kiến trúc hướng sự kiện, mỗi thành phần chỉ hoạt động khi một sự kiện được gửi qua hệ thống.
Hãy tưởng tượng một chiếc xe giả thuyết với bàn đạp phanh và đèn phanh.
- Phanh lượt ánh sáng trên khi nó nhận được một brake_on sự kiện, và tắt khi nó nhận được một brake_off sự kiện.
- Bàn đạp phanh sẽ gửi một sự kiện phanh_on khi nó được nhấn xuống và một sự kiện phanh_off khi nó được phát hành.
Đây là tất cả tốt và tốt, cho đến khi bạn có tình huống xe được bật với bàn đạp phanh đã được nhấn xuống . Vì đèn phanh không bao giờ nhận được sự kiện phanh_on , nên nó sẽ tắt - rõ ràng là một tình huống không mong muốn. Bật đèn phanh theo mặc định chỉ đảo ngược tình huống.
Có thể làm gì để giải quyết 'vấn đề trạng thái ban đầu' này?
EDIT: Cảm ơn bạn cho tất cả các câu trả lời. Câu hỏi của tôi không phải là về một chiếc xe thực tế. Trong xe hơi, họ đã giải quyết vấn đề này bằng cách liên tục gửi trạng thái - do đó không có vấn đề khởi động trong miền đó. Trong miền phần mềm của tôi, giải pháp đó sẽ sử dụng nhiều chu kỳ CPU không cần thiết.
EDIT 2: Ngoài câu trả lời của @ gbjbaanb , tôi sẽ tìm một hệ thống trong đó:
- bàn đạp phanh giả định, sau khi khởi tạo, sẽ gửi một sự kiện với trạng thái của nó và
- đèn phanh giả định, sau khi khởi tạo, sẽ gửi một sự kiện yêu cầu một sự kiện trạng thái từ bàn đạp phanh.
Với giải pháp này, không có sự phụ thuộc giữa các thành phần, không có điều kiện cuộc đua, không có hàng đợi tin nhắn để cũ và không có thành phần 'chính chủ'.
initialize
) có chứa dữ liệu cảm biến cần thiết.