gpt4 book ai didi

java - ZeroMQ 重新排序

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:04 26 4
gpt4 key购买 nike

我正在使用 DEALER (outboudSocket)、ROUTER (inboundSocket) 套接字来连接本地计算机上的两个应用程序。使用的协议(protocol)是tcp。我正在使用 java Zeromq 绑定(bind)和一个 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());
}

是否可以保证消息永远不会被重新排序?

最佳答案

消息传递

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

消息顺序

但是,应保留传入消息的顺序(由单个 NIO 线程下划线),因为在缓冲区管理上的 1 对 1 连接应用程序上不会发生抽奖、循环旋转木马逻辑(仍然没有策略来避免任何其他第 3 方 .connect() -ing .bind() 暴露的套接字访问点)

注意传输类开销

您无需浪费资源在一对仅本地主机连接的应用程序上部署 TCP 堆栈开销。如果传输类别可用,您是否尝试过速度/性能比较{ inproc: | TCP: | ... }

关于java - ZeroMQ 重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27687338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com