ZeroMQ重新排序

时间:2014-12-29 10:43:14

标签: java zeromq

我正在使用DEALER(outboudSocket),ROUTER(inboundSocket)套接字来连接本地计算机上的两个应用程序。使用的协议是tcp。我正在使用java zeromq绑定和一个NIO线程:

ZMQ.Context zmqContext = ZMQ.context(1);

我在发送端有一个线程,在while循环中从阻塞队列中获取消息并执行send:

private void send(String msg){
     outboundSocket.sendMore("");
     outboundSocket.send(msg);
}

接收端有一个线程,在while循环中从socket接收消息并将其放入阻塞队列:

private String recv(){
    inboundSocket.recv();
    inboundSocket.recv();
    return new String(inboundSocket.recv());
}

是否有任何保证邮件永远不会被重新排序?

1 个答案:

答案 0 :(得分:1)

MESSAGE DELIVERY

有许多明确的警告不要假设任何类型的保证消息传递(阅读关于此主题的优秀书籍“Code Connected:Volume 1”)

消息顺序

然而,应该保留传入消息的顺序(由单个NIO线程强调),因为在缓冲区管理的1对1连接应用上没有彩票,没有循环旋转木马逻辑(仍然没有政策可以避免任何其他第三方.connect() - .bind() - 公开的套接字访问点)

对传输类开销

的理解

您不需要浪费资源来在一对仅连接本地主机的应用程序上部署TCP堆栈开销。如果传输类可用{ inproc: | TCP: | ... }

,您是否尝试过速度/性能比较?