8.2. 通过代理路由信息

如果您需要存储和转发消息,您可以在消息代理上通过队列进行路由。在这种情况下,消息制作者向路由器发送消息,路由器将消息发送到代理队列。当消费者连接到路由器来接收消息时,路由器从代理队列检索它们。

您可以将消息路由到与路由器网络相同的 OpenShift 集群中运行的代理,或路由到集群外部运行的代理。

先决条件

  • 您必须有权访问消息代理。

流程

  1. 开始编辑路由器部署的 Interconnect 自定义资源 YAML 文件。

    $ oc edit -f router-mesh.yaml
  2. spec 部分,添加连接器以连接到代理、指向代理的定位点地址,以及 autolinks 来创建到队列的链接。

    router-mesh.yaml 文件示例

    apiVersion: interconnectedcloud.github.io/v1alpha1
    kind: Interconnect
    metadata:
      name: router-mesh
    spec:
      ...
      addresses:
      - prefix: my-queue  1
        waypoint: true
      autoLinks:  2
      - address: my-queue
        direction: in
        connection: my-broker
      - address: my-queue
        direction: out
        connection: my-broker
      connectors:  3
      - name: my-broker
        host: broker
        port: 5672
        routeContainer: true

    1
    哪些消息应存储在代理队列中的地址(或一组地址)。
    2
    autolink 配置。它定义要用于发送和接收代理的消息的传入和传出链接和连接。
    3
    将路由器连接到消息代理的连接。

    Operator 对路由器网络应用更改并重启每个 Pod。

  3. 验证路由器是否已建立到消息代理的 autolink。

    $ oc exec router-mesh-6d6dccb57f-x5cqf -it -- qdstat --autolinks
    AutoLinks
      addr      dir  phs  extAddr  link  status  lastErr
      ====================================================
      my-queue  in   1             26    active
      my-queue  out  0             27    active
  4. 如果您有额外的路由器部署自定义资源,可在路由器网络中定义路由器,请对每个 CR 重复此步骤。

    路由器网络中的每个路由器必须具有相同的地址配置。

其他资源