UNIX环境下如何应用消息队列

2009-05-13 13:56:18来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

一、 引 言
---- 进 入 九 十 年 代 后, 随 着 计 算 机 和 网 络 技 术 的 发 展, 很 多 数 据 处 理 系 统 都 采 用 开 放 系 统 结 构 的 客 户 机/ 服 务 器 网 络 模 式。 即 客 户 机 提 出 任 务 请 求, 由 服 务 器 做 相 应 处 理, 执 行 被 请 求 的 任 务, 然 后 将 结 果 返 回 给 客 户 机。 例 如: 银 行ATM 的 前 置 机 和 数 据 处 理 的 主 机 之 间 即 构 成 客 户 机/ 服 务 器 模 式; 电 话 银 行 的 前 置 机 和 银 行 数 据 处 理 主 机 之 间 也 构 成 这 种 模 式 结 构。 还 有POS 等。 这 样, 各 种 应 用 的 请 求 是 很 频 繁 的, 数 据 主 机 在 处 理 通 存 通 兑, ATM, 电 话 银 行, POS 等 各 种 请 求 时, 如 果 没 有 相 应 机 制 的 控 制, 数 据 将 出 现 混 乱, 有 可 能 产 生 透 支, 也 有 可 能 处 理 密 码 已 改 变 的 帐 户.。 数 据 的 完 整 性, 安 全 性 无 法 控 制。 而 消 息 队 列 正 是 解 决 这 一 问 题 的 有 力 工 具。 它 使 主 机 在 处 理 各 种 请 求 时, 按 照 先 后 顺 序 有 条 不 紊 地 进 行, 保 证 了 数 据 的 一 致 性 和 安 全 性。
二、 基 本 概 念
---- 1. 队 列
---- 队 列 是 信 息 的 线 性 表, 它 的 访 问 次 序 是 先 进 先 出(FIFO)。 也 就 是 说, 置 入 队 列 中 的 第 一 个 数 据 项 将 是 从 队 列 中 第 一 次 读 出 的 数 据 项, 置 入 的 第 二 项 将 是 读 出 的 第 二 项, 依 此 类 推。 这 是 队 列 允 许 的 唯 一 存 取 操 作, 其 它 随 机 访 问 是 不 允 许 的。 这 种 数 据 结 构 保 证 对 数 据 资 源 的 请 求 将 严 格 按 照 先 后 顺 序 进 行, 因 而 可 用 于 对 事 件 的 调 度 并 起 到I/O 缓 冲 的 作 用。
---- 2. 报 文
---- 发 送 进 程 和 接 收 进 程 进 行 信 息 的 交 换, 一 般 是 通 过 将 信 息 划 分 为 若 干 段 放 入 数 据 交 换 缓 冲 器 中, 进 程 间 通 过 对 该 缓 冲 器 的 存 取 来 实 现 通 信。 因 此, 数 据 是 以 不 连 续 的 形 式 在 进 程 间 传 送, 这 些 不 连 续 的 部 分 就 叫 报 文。
---- 3. 消 息 队 列
---- 将 报 文 按 队 列 的 结 构 进 行 组 织 就 叫 消 息 队 列。 该 队 列 用 于 存 放 正 被 发 送 或 接 收 的 每 一 个 报 文 的 标 题 信 息。 每 一 个 消 息 队 列 还 对 应 有 一 个 数 据 结 构, 它 含 有 消 息 队 列 的 存 取 权 限, 和 消 息 队 列 的 当 前 状 态 信 息 等 信 息。 消 息 队 列 可 进 行" 发 送" 和" 接 收" 操 作。
三、 消 息 队 列 的 编 程 要 点 及 运 作 过 程
---- 1. 消 息 队 列 的 创 建
---- 在 报 文 能 够 发 送 和 接 收 之 前, 必 须 创 建 一 个 能 够 唯 一 被 识 别 出 的 消 息 队 列 和 数 据 结 构, 这 个 被 创 建 的 唯 一 标 识 符 叫 做 消 息 队 列 描 述 符(msqid), 用 来 识 别 或 引 用 相 关 的 消 息 队 列 和 数 据 结 构。 用msgget(long key, int msgflg) 系 统 调 用 来 创 建 消 息 队 列, 其 中 key 是 一 个 长 整 型, 可 由 用 户 设 定 也 可 通 过ftok() 获 得。msgflg 的 值 是 八 进 制 的 消 息 队 列 操 作 权 和 控 制 命 令 的 组 合。 操 作 权 定 义 为:
操作允许权 八进制整数
用户可读 0400
用户可写 0200
同组可读 0040
同组可写 0020
其它可读 0004
其它可写 0002
---- 操 作 权 可 相 加 而 派 生, 如 用 户 可" 读"、" 写" 的 权 限 为0400|0200=0600。 控 制 命 令 可 取IPC_CREAT 或IPC_EXCL。 如 果 要 创 建 一 个key=888 且 属 主 和 同 组 可 读 写 的 消 息 队 列, 执 行 以 下 系 统 调 用msgget(0x888,0660|IPC_CREAT)。 创 建 后 可 用ipcs 命 令 看 到 以 下 信 息:

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:流量統計 darkstat

下一篇:实现Unix用户在指定的端口和规定的日期和时间内注册登录