Tôi làm việc trên các ứng dụng tài chính trong Java và nhận được quyền đồng thời là đau. Erlang và mô hình diễn viên được cho là phù hợp cho các ứng dụng đồng loạt ồ ạt nhưng tôi không thể tìm ra cách làm điều đó trong Java. Tôi biết có những thư viện như Jetlang, FunctionalJava, kilim, vv, nhưng chúng thường không vượt ra ngoài các ví dụ đơn giản.làm thế nào để làm diễn viên (erlang) trong java?
Giả sử tôi cần xử lý ba hoặc bốn sự kiện khác nhau, như tính một số số từ nguồn cấp dữ liệu thị trường, nguồn cấp dữ liệu đặt hàng/giao dịch và 'xuất' một số dẫn xuất của dữ liệu này. Hầu hết thời gian, các sự kiện hoặc luồng dữ liệu này cần được xử lý theo thứ tự (ít nhất là theo thứ tự đối với một số khóa ... ví dụ, tất cả các đơn đặt hàng cho một biểu tượng cụ thể phải được xử lý theo thứ tự, nhưng song song với đối với các ký hiệu không liên quan)
Tôi tạo một đối tượng Java bình thường với các phương thức làm thay đổi trạng thái. Thay vì để các phương thức đó thay đổi trạng thái trực tiếp, tôi đặt các tham số của chúng (bằng cách chuyển đổi chúng thành một đối tượng lệnh) trong hàng đợi năm mươi (hộp thư của erlang), và phương thức react() xử lý hàng đợi đó. Bằng cách này, tất cả các bản cập nhật phải trải qua một hàng đợi duy nhất và phương thức react() chỉ có thể được truy cập một bản cập nhật tại một thời điểm. Về mặt lý thuyết, điều này sẽ giúp tôi tiết kiệm được sự cần thiết phải khóa hoặc đồng bộ hóa trên phương pháp này.
Tuy nhiên, hàng đợi này về cơ bản là hàng đợi của nhà sản xuất/người tiêu dùng, có nghĩa là hàng đợi chặn. Chặn là rất xấu cho khả năng mở rộng. Ngoài ra, có một hàng đợi duy nhất có nghĩa là tất cả các đối tượng lệnh cập nhật của tôi (trong các kiểu khác nhau) đi ra khỏi hàng đợi với một kiểu siêu chung chung (như Object) và tôi phải đưa chúng trở lại đúng kiểu và cho phản ứng() xử lý chúng .
Khi đối tượng được tạo thành này tạo ra đầu ra, được tiêu thụ bởi một đối tượng khác như vậy, tôi sẽ trải qua quá trình tương tự. Nói cách khác, tôi đã thay đổi mô hình lập trình từ hướng đối tượng, với các phương thức trả về kết quả, cho một số dạng tiếp tục đi qua cơn ác mộng nơi tất cả các phương thức của tôi trở nên không đồng bộ.
Bất kỳ ý tưởng nào về cách tôi có thể tiếp cận điều này?
FYI, theo trang web của diễn viên, có vẻ như dự án không còn được duy trì nữa. –