我正在一个线程中启动 ritz 服务器,并使用 nrepl 客户端以编程方式与其通信:
(require '[clojure.tools.nrepl :as repl])
(def connection (repl/connect :port 15351)) ;; port of ritz-nrepl
(-> (repl/client connection 1000)
(repl/message {:op "eval" :code '(+ 3 3)}))
(其中一些基于http://hugoduncan.github.io/ritz-conj/#/5/2)
这很好用,我收到了来自 ritz-nrepl 服务器的响应。但是如果我想用框架做一些事情:
(repl/message connection {:op "break-on-exception"})
(repl/message connection {:op "eval" :code '(/ 1 0)}) ;; empty response {} here
(repl/message connection {:op "frame-source" :frame-number 1})
这会引发异常,因为“帧源”操作需要 :thread-id。但是我怎么知道线程ID?我检查了 break-context 并且我看到映射中有表示线程 id 的键应该由我传入的 :thread-id 查找,但是我应该如何知道 :thread-id预先?
感谢您的任何指导!