3/ZDCF
ZeroMQ 设备配置文件
- 状态:已退役
- 编辑者:Pieter Hintjens ph@imatix.com
ZeroMQ 设备配置文件格式(ZDCF)指定了一种配置 0MQ 设备的标准语法。它提供了用于配置 0MQ Context 和一组 0MQ Socket 的信息。本规范旨在使共享和重用设备以及构建设备管理系统变得更容易。
许可证
版权所有 (c) 2010 iMatix Corporation 和贡献者
本规范是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证(或您选择的任何后续版本)的条款重新分发和/或修改它。
分发本规范是希望它有用,但没有任何担保;甚至不包括适销性或特定用途适用性的默示担保。更多详细信息请参阅 GNU 通用公共许可证。
您应该已经随此程序收到一份 GNU 通用公共许可证的副本;如果未收到,请访问 https://gnu.ac.cn/licenses。
变更流程
本规范是一个自由开放的标准(参见“自由开放标准的定义”)并受数字标准组织(Digital Standards Organization)的共识导向规范系统(COSS)管辖(参见“共识导向规范系统”)。
语言
本文档中的关键词“MUST”(必须)、“MUST NOT”(不得)、“REQUIRED”(必需)、“SHALL”(应)、“SHALL NOT”(不应)、“SHOULD”(应该)、“SHOULD NOT”(不应)、“RECOMMENDED”(推荐)、“MAY”(可以)和“OPTIONAL”(可选)应按照 RFC 2119 中的描述进行解释(参见“RFC 中表示需求级别的关键词”)。
目标
ZDCF 旨在
- 提供一种用于设备配置的标准可重用格式。
- 尽可能广泛地适用于不同的编程语言。
- 平台中立。
- 易于阅读和编辑。
- 处理起来轻量化。
- 涵盖所有 0MQ Context 和 Socket 配置选项。
架构
ZDCF 是一种 JSON(参见“Introducing JSON”)格式。ZDCF 文件包含一个可选的 Context 对象和零个或多个 Device 对象。概念上,一个 ZDCF 文件对应一个进程,该进程包含一个 Context 和零个或多个 Device 线程。
下面是一个典型的 ZDCF 文件示例
{
"context": {
"iothreads": 1,
"verbose": true
},
"main" : {
"type": "queue",
"frontend": {
"option": {
"hwm": 1000,
"swap": 25000000
},
"bind": "tcp://eth0:5555"
},
"backend": {
"bind": "tcp://eth0:5556"
}
}
}
这也是一个有效的 ZDCF 文件
{
}
Context 对象
Context 对象是可选的,具有以下属性
- 其名称为 “context”。
- “iothreads” - (integer) - 指定 Context 的 I/O 线程数。如果未指定,默认为 1。
- “verbose” - (Boolean) - 如果为 “true”,解析 JSON 的程序应输出跟踪信息。如果未指定,默认为 “false”。
Device 对象
Device 对象可以出现零次或多次,并具有以下属性
- 名称可以是除 “context” 以外的任何值。
- “type” - (string) - 指定 Device 类型。以 “z” 开头的类型保留用于内置的 0MQ Device。应用程序可以根据需要定义其他 Device 类型。
- 零个或多个 Socket 对象。
Socket 对象
Socket 对象可以在 Device 对象内出现零次或多次,并具有以下属性
- 名称可以是除 “type” 以外的任何值。
- “bind” - (string) - 指定要将 Socket 绑定到的零个或多个端点。
- “connect” - (string) - 指定要将 Socket 连接到的零个或多个端点。
- “option” - (object) - 指定 Socket 的配置。
Option 对象
Option 对象在 Socket 对象内部是可选的。它具有以下属性
- 其名称为 “option”。
- “hwm” - (integer) - 指定 ZMQ_HWM 选项。
- “swap” - (integer) - 指定 ZMQ_SWAP 选项。
- “affinity” - (integer) - 指定 ZMQ_AFFINITY 选项。
- “identity” - (string) - 指定 ZMQ_IDENTITY 选项。
- “subscribe” - (string) - 指定 ZMQ_SUBSCRIBE 选项。
- “rate” - (integer) - 指定 ZMQ_RATE 选项。
- “recovery_ivl” - (integer) - 指定 ZMQ_RECOVERY_IVL 选项。
- “mcast_loop” - (Boolean) - 指定 ZMQ_MCAST_LOOP 选项。
- “sndbuf” - (integer) - 指定 ZMQ_SNDBUF 选项。
- “rcvbuf” - (integer) - 指定 ZMQ_RCVBUF 选项。
更多详情请参阅 zmq_setsockopt(3)。
值数组
在有意义的地方,属性可以指定为值数组,至少包括
- Socket 的 “bind” 属性。
- Socket 的 “connect” 属性。
- Option 的 “subscribe” 属性。
例如
"frontend": {
"option": {
"subscribe": [ "10001", "10002" ]
},
"bind": [ "tcp://eth0:5555", "inproc://device" ]
}
内置 Device 类型
编写时存在的内置 Device 类型有
- “zqueue” - ZMQ_QUEUE
- “zforwarder” - ZMQ_FORWARDER
- “zstreamer” - ZMQ_STREAMER
更多详情请参阅 zmq_device(3)。