Tôi có ứng dụng xử lý clojure là một kênh của kênh. Mỗi bước xử lý thực hiện các phép tính của nó một cách không đồng bộ (ví dụ: tạo một yêu cầu http bằng cách sử dụng bộ http hoặc một cái gì đó), và đặt nó kết quả trên kênh đầu ra. Bằng cách này, bước tiếp theo có thể đọc từ kênh đó và thực hiện tính toán của nó.Cách tắt tốt nhất một đường ống core.async clojure của các quy trình
chức năng chính của tôi trông như thế này
(defn -main [args]
(-> file/tmp-dir
(schedule/scheduler)
(search/searcher)
(process/resultprocessor)
(buy/buyer)
(report/reporter)))
Hiện nay, bước lên lịch lái các đường ống dẫn (nó đã không có một kênh đầu vào), và cung cấp các chuỗi với khối lượng công việc.
Khi tôi chạy này trong REPL:
(-main "some args")
Nó về cơ bản chạy mãi mãi do tính vô hạn của Scheduler. Cách tốt nhất để thay đổi kiến trúc này sao cho tôi có thể tắt toàn bộ hệ thống từ REPL? Việc đóng mỗi kênh có nghĩa là hệ thống chấm dứt?
Một số kênh trợ giúp có phát sóng không?
'(Hệ thống/thoát 0)'? – Bill
Điều đó cũng khiến cho REPL không may. Tôi sẽ thử phương pháp Thành phần –