我使用交易商(outboudSocket)、路由器(inboundSocket)套接字连接本地机器上的两个应用程序。使用的协议是tcp。我使用的是java绑定和一个NIO线程:
ZMQ.Context zmqContext = ZMQ.context(1);我在发送端有一个线程,从while循环中阻塞队列中获取消息并执行发送:
private void send(String msg){
outboundSocket.sendMore("");
outboundSocket.send(msg);
}以及接收端的一个线程,从while循环中的套接字获取消息,并将其放置到阻塞队列中:
private String recv(){
inboundSocket.recv();
inboundSocket.recv();
return new String(inboundSocket.recv());
}有任何消息永远不会被重新排序的保证吗?
发布于 2014-12-29 11:08:02
讯息传递
有许多明确的警告要求不要承担任何有保证的消息传递(请阅读关于此主题的优秀著作“代码连接:第1卷”)。
电文顺序
然而,传入消息的顺序(由单个NIO线程强调)应保持不变,因为没有彩票,在缓冲区管理的1对1连接的应用程序上不存在循环循环逻辑(仍然没有避免任何其他第三方.connect()-ing .bind()-exposed套接点的策略)。
对传输类开销的影响
您不需要浪费资源在一对本地主机连接的应用程序上部署TCP堆栈开销。如果传输类可用{ inproc: | TCP: | ... },您是否进行了速度/性能比较的实验?
https://stackoverflow.com/questions/27687338
复制相似问题