gpt4 book ai didi

java - 如何使用 ZeroMQ 将字节数组发送到套接字?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:52 26 4
gpt4 key购买 nike

我是第一次使用 ZeroMQ,我编写了一个简单的实用程序来将数据发送到套接字。下面是我使用 ZeroMQ 将数据发送到套接字的简单类。截至目前,我正在使用 ZeroMQ,因此编写了一个如下所示的简单类,在我更加熟悉之后,我需要将相同的代码放入多线程代码中。

public static void main(String[] args) {

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

// as of now sending only 10 data
for (int i = 1; i <= 10; i++) {
ZMQ.Socket socket = context.socket(ZMQ.PUSH);
socket.connect("tcp://localhost:10000");

byte[] packByteArray = generateRandomStringAsBytes();

ZMsg req = new ZMsg();
req.add(packByteArray);
req.send(socket);

socket.close();
}
context.term();
}

由于这是我的第一次,所以我不知道这是否是使用 ZeroMQ 将数据作为字节数组发送的正确且有效的方法?我听说过 ZFrame 和 ZMsg 之类的各种东西,不确定我们什么时候需要同时使用它们以及将字节数组发送到套接字的最佳方式是什么。

在我们的例子中,我们需要将随机字符串作为字节发送到套接字,所以不确定使用 ZeroMQ 的最佳和有效方法是什么?

最佳答案

没有人会通过阅读 GPS 航路点列表(无论列表长短)而享受攀登珠穆朗玛峰的激情......

因此,不要阅读代码示例而不事先了解基本概念。


正确的方法

ZeroMQ 是根据一组特定的格言设计的——零-阻塞、零-共享、零-复制、零代理( s), Minimum-latency, messaging framework.

人们宁愿将其视为一个框架,可以依赖它来建立一个快速、半持久的Formal-Scaleable-Ccommunication-Pattern Layer(不是一套消耗品)

虽然没有人可以限制您混合使用 MsgFrame 以及 for-消息传递套接字的循环设置/丢弃,这不是方法,可以实现 ZeroMQ 最强大的功能。

很好地理解行为(不是代码)和原因将基本 ZeroMQ 基元扩展到的每种特定样式一个强大的较低级别有限状态自动机的消息传递层值得花一两周时间。

在您所描述的情况下,最好的步骤是忘记编码并从系统的主要角度来看,以便全面了解 ZeroMQ 架构。

an extended approach with SIG_KILL add-on

错过关键点只会导致错误的设计方法和更大的时间浪费

  • 设计要实现的分布式消息传递层行为/抽象
  • 在每个进程/线程/节点中设置资源并安排.bind()/.connect()方法的正确顺序
  • 尽可能采用非阻塞操作模式
  • 性能调整(水印设置、超时、子采样/ super 采样)
  • 适当的资源释放
  • 异常处理作为设计的一个整体习惯
  • 强制终止每个进程/线程/节点中的上下文以避免泄漏

高效的方式

这可能有不同的含义 - TimeDOMAIN 效率(即快速)、MemoryFOOTPRINT 效率(即不浪费 MEM 和避免垃圾收集)、I/O 资源效率或编码/重用效率。

ZeroMQ 在内部效率方面做了巨大而出色的工作,用户可以从 Masters of the Masters 放入库中的内容中受益。

库的用户可能会以一种低效的方式(不是说主要错误的方式)如何使用 ZeroMQ 工具来完成各自的任务,从而破坏所有好处。

最好的下一步

恕我直言,如果您对专业消息传递很认真,请阅读这本好书并获取基本设置知识、使用软信号的更复杂的多套接字消息传递层设计以及对并发、异构的强大功能的进一步思考,分布式处理以提升您的学习曲线。

Pieter Hintjens 的书“Code Connected,第 1 卷”(提供 PDF 格式)不仅仅是您问题的推荐来源。

在那里您将获得进一步使用 ZeroMQ 的理由

ZeroMQ 是一个很棒的工具,不仅适用于消息传递层本身。值得花时间和精力。 multi-socket messaging layer with soft signalling

关于java - 如何使用 ZeroMQ 将字节数组发送到套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811736/

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