Tôi hiện đang trong quá trình tạo một ứng dụng Java dựa trên Akka khá lớn và tôi đang gặp phải một số vấn đề khiến tôi không thể kết thúc.Quy ước đặt tên cho thông điệp và diễn viên Akka
bố trí gói hiện tại của tôi trông kinda như thế này:
lớp Mobile
tôi phục vụ như là người giám sát của các diễn viên bên trong gói actors
.
Vì tôi không muốn tạo bộ diễn viên mới cho mỗi HttpClient
và Account
, tôi chuyển những người xung quanh trong các đối tượng tin nhắn được lưu trữ trong gói tin, cùng với điểm cuối ActorRef
nhận kết quả cuối cùng. Tuy nhiên, điều này tạo ra một gói messages
rất lộn xộn với một thông điệp khác nhau cho mỗi tác nhân. Ví dụ. MobileForActor1
, Actor1ForMobile
, MobileForActor2
vv Bây giờ câu hỏi của tôi là, có Công ước để sử dụng cho loại nội dung này có liên quan đến vấn đề này không và cấu trúc của tôi (Mobile
->Actor1
->Mobile
->Actor2
-> vv.) Akka muốn nó được hoặc tôi phải chỉ loại thác các tin nhắn (Mobile
->Actor1
->Actor2
-> vv.)?
Ngay bây giờ tôi đang gửi một ConnectMessage
với nam diễn viên của tôi Mobile
mà sau đó gửi nó đến Actor1
, Actor1
quá trình nó và gửi một thông điệp mới trở lại Mobile
, Mobile
gửi rằng phản ứng sau đó đến Actor2
và chu kỳ tiếp tục với một thông điệp mới được tạo dựa trên thông điệp cũ. Ví dụ. new Message2(message1.foo, message1.bar, message1.baz, newComputatedResult, newComputatedResult2, etc);
Thực tiễn tốt này hay tôi nên bao gồm trường hợp cũ (có thể chứa thông tin không hữu ích nữa) và bao gồm nội dung mới? Ví dụ. new Message2(message1, newComputatedResult, newComputatedResult2, etc);
Hoặc tôi có nên làm điều gì đó hoàn toàn khác?
Tôi đã nghĩ đến việc sử dụng TypedActors nhưng tôi yêu cầu sử dụng mẫu thác nước và tôi không biết làm cách nào để truyền ActorRef của người nghe muốn nhận kết quả cuối cùng.
Tôi hy vọng bản thân mình có thể hiểu được đủ bởi vì tiếng Anh không phải là ngôn ngữ thời con gái của tôi và câu hỏi rõ ràng cho mọi người.
Tôi là một nhà phát triển Akka bắt đầu và yêu thích ý tưởng nhưng vì tài liệu không đề cập đến điều này rất tốt, tôi đã nhận ra đây là nơi tốt nhất để hỏi. Cảm ơn vì đã đọc!
Bạn có thể hiển thị một số ví dụ về cách đặt tên tin nhắn tốt không? Ví dụ tôi có một nhà cung cấp và người tiêu dùng. Người tiêu dùng muốn hỏi Nhà cung cấp có bao nhiêu hàng hóa. Bạn sẽ đặt tên tin nhắn theo yêu cầu và trả lời như thế nào? –
@TemaBolshakov - Làm thế nào về "GetGoodsCountRequest" và "GetGoodsCountResponse"? –
không chắc chắn những tên này đủ thành ngữ trong scala. Tôi thích cái đầu tiên nhưng sau đó trông hơi dư thừa. Có thể nào tốt hơn để trả lời với Int? Hoặc xác định bí danh loại cho Int, ví dụ 'type GoodsCount = Int'. Whats lựa chọn tốt nhất trong scala? –