5/ZDCF
ZeroMQ 设备配置文件
- 状态: 已退役
- 编辑: Pieter Hintjens ph@imatix.com
ZeroMQ 设备配置文件 (ZDCF) 指定了一种用于配置 0MQ 设备的标准语言。它提供了配置 0MQ 上下文和一组 0MQ 套接字的信息。本规范旨在使构建、共享和重用 0MQ 设备以及构建设备管理系统变得更容易。
许可证
版权所有 (c) 2010-2011 iMatix Corporation 及贡献者
本规范是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的第 3 版,或者(由您选择)任何更新的版本。
分发本规范是希望它有用,但没有任何担保;甚至不包括适销性或特定用途适用性的默示担保。更多详情请参阅 GNU 通用公共许可证。
您应该已随本程序收到一份 GNU 通用公共许可证的副本;如果没有,请参阅 https://gnu.ac.cn/licenses。
变更流程
本规范是一个自由开放的标准(见“Definition of a Free and Open Standard”)并受数字标准组织(Digital Standards Organization)的共识导向规范系统(COSS)管辖(见“Consensus Oriented Specification System”)。
语言
本文档中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”应按照 RFC 2119 中的描述进行解释(见“Key words for use in RFCs to Indicate Requirement Levels”)。
目标
ZDCF 的目标是
- 为设备配置提供标准的可重用语义。
- 允许在任何树形结构语法中进行兼容表达。
- 尽可能广泛地支持不同的编程语言。
- 涵盖所有 0MQ 上下文和套接字配置选项。
架构
ZDCF 使用树形结构语义,可以使用任意语法实现,例如 ZPL(见“ZFL Property Language”)、JSON(见“Introducing JSON”)、XML 或其他。一个 ZDCF 文件包含一个可选的上下文对象和零个或多个设备对象。从概念上讲,一个 ZDCF 文件对应一个进程,该进程包含一个单一上下文和零个或多个设备线程。
这是一个以 JSON 表达的典型 ZDCF 文件示例
{
"context": {
"iothreads": 1,
"verbose": true
},
"main" : {
"type": "zmq_queue",
"frontend": {
"type": "SUB",
"option": {
"hwm": 1000,
"swap": 25000000
},
"bind": "tcp://eth0:5555"
},
"backend": {
"bind": "tcp://eth0:5556"
}
}
}
这是以 ZPL 表达的相同属性树(见“ZFL Property Language”)
context
iothreads = 1
verbose = 1
main
type = zmq_queue
frontend
type = SUB
option
hwm = 1000
swap = 25000000
bind = tcp://eth0:5555
backend
bind = tcp://eth0:5556
以及简单的 XML 格式
<zdcf>
<context iothreads = "1" verbose = "1" />
<main type = "zmq_queue">
<frontend type = "SUB">
<option hwm = "1000" swap = "25000000" />
<bind>tcp://eth0:5555</bind>
</frontend>
<backend>
<bind>tcp://eth0:5556</bind>
</backend>
</main>
</zdcf>
ZDCF 树可以为空;这是一个有效的 JSON 指定文件
{
}
上下文对象
上下文对象是可选的,并具有以下属性
- 其名称为“context”。
- “iothreads” - (整数) - 指定上下文的 I/O 线程数。如果未指定,则默认为 1。
- “verbose” - (布尔值) - 如果为“true”,则解析 JSON 的程序应输出跟踪信息。如果未指定,则默认为“false”。
设备对象
设备对象可以出现零次或多次,并具有以下属性
- 名称可以是除“context”之外的任何值。
- “type” - (字符串) - 指定设备类型。以“z”开头的类型保留用于内置的 0MQ 设备。其他设备类型可根据需要由应用程序定义。
- 零个或多个套接字对象。
撰写本文时存在的内置设备类型有
- “zmq_queue” - ZMQ_QUEUE
- “zmq_forwarder” - ZMQ_FORWARDER
- “zmq_streamer” - ZMQ_STREAMER
详情请参阅 zmq_device(3)。
套接字对象
套接字对象可以在设备对象中出现零次或多次,并具有以下属性
- 名称可以是除“type”之外的任何值。
- “type” - (字符串) - 指定套接字类型。
- “bind” - (字符串) - 指定要绑定套接字的零个或多个端点。
- “connect” - (字符串) - 指定要连接套接字的零个或多个端点。
- “option” - (对象) - 指定套接字的配置。
撰写本文时存在的套接字类型有
- “sub” - ZMQ_SUB
- “pub” - ZMQ_PUB
- “req” - ZMQ_REQ
- “rep” - ZMQ_REP
- “xreq” - ZMQ_XREQ
- “xrep” - ZMQ_XREP
- “push” - ZMQ_PUSH
- “pull” - ZMQ_PULL
- “pair” - ZMQ_PAIR
详情请参阅 zmq_socket(3)。
选项对象
选项对象在套接字对象中是可选的。它具有以下属性
- 其名称为“option”。
- “hwm” - (整数) - 指定 ZMQ_HWM 选项。
- “swap” - (整数) - 指定 ZMQ_SWAP 选项。
- “affinity” - (整数) - 指定 ZMQ_AFFINITY 选项。
- “identity” - (字符串) - 指定 ZMQ_IDENTITY 选项。
- “subscribe” - (字符串) - 指定 ZMQ_SUBSCRIBE 选项。
- “rate” - (整数) - 指定 ZMQ_RATE 选项。
- “recovery_ivl” - (整数) - 指定 ZMQ_RECOVERY_IVL 选项。
- “mcast_loop” - (布尔值) - 指定 ZMQ_MCAST_LOOP 选项。
- “sndbuf” - (整数) - 指定 ZMQ_SNDBUF 选项。
- “rcvbuf” - (整数) - 指定 ZMQ_RCVBUF 选项。
详情请参阅 zmq_setsockopt(3)。
值数组
在有意义的情况下,属性可以指定为值数组,至少包括
- 套接字的“bind”属性。
- 套接字的“connect”属性。
- 选项的“subscribe”属性。
例如
"frontend": {
"option": {
"subscribe": [ "10001", "10002" ]
},
"bind": [ "tcp://eth0:5555", "inproc://device" ]
}