首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZeroMQ重排

ZeroMQ重排
EN

Stack Overflow用户
提问于 2014-12-29 10:43:14
回答 1查看 132关注 0票数 1

我使用交易商(outboudSocket)、路由器(inboundSocket)套接字连接本地机器上的两个应用程序。使用的协议是tcp。我使用的是java绑定和一个NIO线程:

代码语言:javascript
复制
ZMQ.Context zmqContext = ZMQ.context(1);

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

代码语言:javascript
复制
private void send(String msg){
     outboundSocket.sendMore("");
     outboundSocket.send(msg);
}

以及接收端的一个线程,从while循环中的套接字获取消息,并将其放置到阻塞队列中:

代码语言:javascript
复制
private String recv(){
    inboundSocket.recv();
    inboundSocket.recv();
    return new String(inboundSocket.recv());
}

有任何消息永远不会被重新排序的保证吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-29 11:08:02

讯息传递

有许多明确的警告要求不要承担任何有保证的消息传递(请阅读关于此主题的优秀著作“代码连接:第1卷”)。

电文顺序

然而,传入消息的顺序(由单个NIO线程强调)应保持不变,因为没有彩票,在缓冲区管理的1对1连接的应用程序上不存在循环循环逻辑(仍然没有避免任何其他第三方.connect()-ing .bind()-exposed套接点的策略)。

对传输类开销的影响

您不需要浪费资源在一对本地主机连接的应用程序上部署TCP堆栈开销。如果传输类可用{ inproc: | TCP: | ... },您是否进行了速度/性能比较的实验?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27687338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档