消 息 M e s s a g e , R a b b i t M Q 中 的 消 息 有 自 己 的 一 系 列 属 性 , 某 些 属 性 对 信 息 流 有 直 接
影 响 .
在 使 用 过 程 中 , 我 们 通 常 还 会 关 注 如 下 的 机 制 :
持 久 化 , 服 务 重 启 时 , 是 否 能 恢 复 队 列 中 的 数 据 .
调 度 策 略 , 交 换 器 如 何 把 消 息 给 到 哪 些 队 列 , 是 每 个 队 列 给 一 条 , 或 者 把 一 条 消 息 给 多 个
队 列 .
分 配 策 略 , 队 列 面 对 消 费 者 时 , 如 何 把 消 息 吐 出 去 , 来 一 个 消 费 者 就 把 消 息 全 给 它 , 还 是
只 给 一 条 .
状 态 反 馈 , 当 消 息 从 某 一 个 队 列 中 被 提 出 后 , 这 个 消 息 的 生 命 周 期 就 此 结 束 , 还 是 说 需 要
一 个 具 体 的 信 号 以 明 确 标 识 消 息 已 被 正 确 处 理 .
上 面 这 些 内 容 , 初 看 之 下 好 像 情 况 有 些 复 杂 了 , 不 过 在 具 体 使 用 过 程 中 , 这 些 东 西 都 是 很
自 然 地 需 要 考 虑 的 . 当 一 套 服 务 跑 起 来 之 后 , 这 些 细 枝 末 节 自 然 消 失 在 无 形 之 中 .
3 . 基 本 形 式
当 服 务 启 在 5 6 7 2 端 口 之 后 , 我 们 就 可 以 开 始 使 用 R a b b i t M Q 了 .
根 据 前 面 的 内 容 , 我 们 需 要 站 在 两 个 角 度 ( 消 息 的 提 供 方 , 和 消 息 的 使 用 方 ) , 去 分 别 考 虑
五 种 角 色 的 情 况 . 当 然 , 在 使 用 时 其 实 只 是 两 个 角 度 , 每 边 四 种 角 色 的 情 况 . 因 为 消 息 的
提 供 方 不 关 心 使 用 方 , 反 之 , 消 息 的 使 用 方 也 不 关 心 消 息 的 提 供 方 . 这 种 关 系 上 的 无 依 赖
本 身 是 " 队 列 服 务 " 的 一 个 最 大 使 用 意 义 所 在 , 用 于 业 务 间 的 分 离 ( 不 管 是 分 了 好 , 还 是 必
须 分 ) .
我 们 先 看 如 何 产 生 消 息 , 即 把 消 息 放 到 队 列 当 中 , 等 待 下 一 步 的 处 理 .
( 之 后 的 代 码 , 使 用 P y t h o n , 相 应 的 A M Q P 协 议 实 现 的 模 块 是 p i k a )
# -*- coding: utf-8 -*-
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='first', type='fanout')
channel.queue_declare(queue='hello')
channel.queue_bind(exchange='first', queue='hello')
channel.basic_publish(exchange='first', routing_key='', body='Hello World!')
上 面 代 码 的 细 节 先 不 用 管 它 , 但 是 直 观 看 到 做 的 事 有 :
获 取 连 接 .
评论