小编mah*_*ang的帖子

Akka 2.6 如何阅读 Akka Typed 中的“死信”?

我已阅读此文档https://doc.akka.io/docs/akka/current/general/message-delivery-reliability.html#dead-letters,其中说:

演员可以订阅事件流上的 akka.actor.DeadLetter 类,请参阅事件流了解如何做到这一点。

在事件流文档:https : //doc.akka.io/docs/akka/current/event-bus.html#event-stream 中,示例代码似乎与经典 Akka 有关,而包akka.actor.ActorSystem不是akka.actor.typed.ActorSystem

import akka.actor.ActorRef;
import akka.actor.ActorSystem;

final ActorSystem system = ActorSystem.create("DeadLetters");
final ActorRef actor = system.actorOf(Props.create(DeadLetterActor.class));
system.getEventStream().subscribe(actor, DeadLetter.class);
Run Code Online (Sandbox Code Playgroud)

但是在 Akka Typed 中,没有subscribe()akka.actor.typed.ActorSystem.eventStream().

actor dead-letter akka akka-typed actorsystem

5
推荐指数
1
解决办法
449
查看次数

lein repl错误:连接被拒绝

我在我的Ubuntu上安装了leiningen,但是当我运行时它会抛出"Connection refused"错误lein repl.这是错误:

$ lein repl
Exception in thread "Thread-4" java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at java.net.Socket.<init>(Socket.java:425)
    at java.net.Socket.<init>(Socket.java:208)
    at clojure.tools.nrepl$connect.doInvoke(nrepl.clj:184)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.tools.nrepl.ack$send_ack.invoke(ack.clj:47)
    at clojure.tools.nrepl.server$start_server.doInvoke(server.clj:146)
    at clojure.lang.RestFn.invoke(RestFn.java:619)
    at user$eval540.invoke(NO_SOURCE_FILE:0)
    at clojure.lang.Compiler.eval(Compiler.java:6619)
    at clojure.lang.Compiler.eval(Compiler.java:6609)
    at clojure.lang.Compiler.eval(Compiler.java:6582)
    at clojure.core$eval.invoke(core.clj:2852)
    at leiningen.core.eval$fn__3577.invoke(eval.clj:304)
    at clojure.lang.MultiFn.invoke(MultiFn.java:231)
    at leiningen.core.eval$eval_in_project.invoke(eval.clj:326)
    at clojure.lang.AFn.applyToHelper(AFn.java:167)
    at clojure.lang.AFn.applyTo(AFn.java:151)
    at clojure.core$apply.invoke(core.clj:619)
    at leiningen.repl$server$fn__7443.invoke(repl.clj:201)
    at clojure.lang.AFn.applyToHelper(AFn.java:159)
    at clojure.lang.AFn.applyTo(AFn.java:151)
    at clojure.core$apply.invoke(core.clj:617)
    at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1788)
    at clojure.lang.RestFn.invoke(RestFn.java:425) …
Run Code Online (Sandbox Code Playgroud)

clojure leiningen

3
推荐指数
1
解决办法
2075
查看次数

在使用params的clojure宏中使用匿名函数

mydata是关于使用的名称和性别:

(def mydata [["a" 'f] ["b" 'm]])
Run Code Online (Sandbox Code Playgroud)

我想要的是:

(group-by #(let [[name gender] %1] name) mydata)
; {"a" [["a" f]], "b" [["b" m]]}
Run Code Online (Sandbox Code Playgroud)

并且:

(group-by #(let [[name gender] %1] gender) mydata)
; {f [["a" f]], m [["b" m]]}
Run Code Online (Sandbox Code Playgroud)

所以我想构建一个这样的函数:

(defn my-group-by [data, field]
  (group-by #(let [[name gender] %1] field) mydata))
Run Code Online (Sandbox Code Playgroud)

但它出错了

(mygroup-by mydata 'name)
; {name [["a" :F] ["b" :M]]}
Run Code Online (Sandbox Code Playgroud)

然后我认为宏可以做到这一点

(defmacro my-macro [data field]
  `(group-by #(let [[name,gender] %1] ~field) ~data))
Run Code Online (Sandbox Code Playgroud)

然后我跑了

(my-macro mydata name)
; CompilerException java.lang.RuntimeException: Can't let qualified …
Run Code Online (Sandbox Code Playgroud)

macros clojure

0
推荐指数
1
解决办法
260
查看次数