是的,zmq可以用來連接兩個Java進程。您可以使用純Java實現JeroMq或ZeroMq與Java客戶端。 JeroMq更容易安裝,因爲您只需要適當的依賴關係。下面是簡單的例子爲聽衆:
import org.zeromq.ZMQ;
public class Subscriber {
public static void main(String[] a){
final ZMQ.Context ctx = ZMQ.context(1);
final ZMQ.Socket sub = ctx.socket(ZMQ.SUB);
// sub.connect("tcp://localhost:6001");
sub.connect("ipc://001");
sub.subscribe("".getBytes());
while (true){
String msg = sub.recvStr();
System.out.println(msg);
}
}
}
和發行商:
import org.zeromq.ZMQ;
public class Publisher {
public static void main(String[] a) throws InterruptedException {
final ZMQ.Context ctx = ZMQ.context(1);
final ZMQ.Socket pub = ctx.socket(ZMQ.PUB);
pub.bind("ipc://001");
// pub.bind("tcp://*:6001");
while (true){
System.out.println("Publishing");
pub.send("Test");
Thread.sleep(1000);
}
}
}
IPC和TCP都工作。
'零'意味着零經紀人。 ZeroMQ適用於基於消息的IPC,並且在他們的網站上有很多示例。 –
感謝@Peter Lawrey(+1) - 但是如果你真的去了他們的網站,你會發現:(1)非Java語言中的大量例子,以及(2)Java例子中的所有例子在同一個JVM進程中的多個線程**之間進行通信**,而不是在2個JVM進程之間進行通信...... – AdjustingForInflation
@PeterLawrey告訴你,我看不到任何與您的語句相矛盾的語句。 – EJP