メインコンテンツにスキップ
バージョン: 5.0

RocketMQ EventBridge クイックスタート

RocketMQ EventBridge は、イベントを格納するメッセージサービスと、イベントをサブスクライブしてプッシュするランタイムが必要です。この場合、メッセージサービスとして Apache RocketMQ を、イベントをサブスクライブおよびプッシュするためのランタイムとして Apache RocketMQ Connect を選択します。もちろん、他のメッセージサービスを選択することもできます。EventBridge はこれに関して制限を設けません。将来的には、EventBridge は、イベント駆動型サービスをより適切に提供するために、OpenMessaging Connect API に基づいて独自のランタイムを実装することも計画しています。

システム要件

  • 64ビットオペレーティングシステム、Linux/Unix/macOSを推奨
  • 64ビット JDK 1.8+

Apache RocketMQのデプロイ

Apache RocketMQ は優れたメッセージサービスであり、EventBus のデフォルトストレージとして選択しました。次のマニュアルに従って迅速にデプロイできます: Apache RocketMQ クイックスタート

Apache RocketMQ Connect のデプロイ

外部の上流および下流サービスに接続するためのデフォルトのランタイムとして Apache RocketMQ Connect を使用します。次のマニュアルに従ってデプロイを完了できます: RocketMQ Connect クイックスタート。Apache RocketMQ Connect をデプロイする前に、次のプラグインをダウンロードして、rocketmq-connect の "pluginPaths" 構成パラメータで定義されたディレクトリに配置する必要があります。

RocketMQ EventBridge のデプロイ

  • EventBridge のダウンロード

    EventBridge のバイナリパッケージは こちら からダウンロードできます: rocketmq-eventbridge-xxx-bin-release.zip。ダウンロード後、解凍すると、次のようなディレクトリが得られます。

    /rocketmq-eventbridge-xxx-bin-release/
    |——bin
    | |——runserver.sh
    | |——eventbridge.sh
    |——config
    | |——application.properties
    |——jar
    | |——rocketmq-eventbridge.jar
  • EventBridge の構成

    実行する前に、config/application.properties ファイルを次のように変更して、EventBridge のランタイム環境を構成する必要があります。

    # Mysql database address
    spring.datasource.url=jdbc:mysql://xxxx:3306/xxxx?characterEncoding=utf8
    spring.datasource.username=xxx
    spring.datasource.password=xxxx

    # RocketMQ nameserver address
    rocketmq.namesrvAddr=xxxxx:9876

    # RocketMQ cluster name
    rocketmq.cluster.name=DefaultCluster

    # RocketMQ Connect address
    rocketmq.connect.endpoint=xxxxxx:8082

    # log default configuration
    log.path=~
    log.level=INFO
    app.name=rocketmq-eventbridge
  • EventBridge の起動

    sh bin/eventbridge.sh start 

    デフォルトのログディレクトリは ~/rocketmq-eventbridge/rocketmq-eventbridge.log にあります。これは、log.path と app.name を変更することで変更できます。ログを使用して、サービスが適切に起動したかどうかを確認できます: img.png

  • EventBridge のテスト

サービスが起動したら、次のデモケースを使用して EventBridge をテストおよび検証できます。

デモ

  • イベントバスの作成

    POST /bus/createEventBus HTTP/1.1
    Host: demo.eventbridge.com
    Content-Type: application/json; charset=utf-8
    {
    "eventBusName":"demo-bus",
    "description":"a demo bus."
    }
  • ソースイベントの作成

    POST /source/createEventSource HTTP/1.1
    Host: demo.eventbridge.com
    Content-Type: application/json; charset=utf-8
    {
    "eventBusName":"demo-bus",
    "eventSourceName":"demo-source",
    "description":"A demo source."
    }
  • イベントルールの作成

    POST /rule/createEventRule HTTP/1.1
    Host: demo.eventbridge.com
    Content-Type: application/json; charset=utf-8
    {
    "eventBusName":"demo-bus",
    "eventRuleName":"demo-rule",
    "description":"A demo rule.",
    "filterPattern":"{}"
    }
  • イベントターゲットの作成

    クラウド内の EventBridge に配信するイベントターゲットを作成します。

    POST /target/createEventTargets HTTP/1.1
    Host: demo.eventbridge.com
    Content-Type: application/json; charset=utf-8
    {
    "eventBusName":"demo-bus",
    "eventRuleName":"demo-rule",
    "eventTargets":[
    {
    "eventTargetName":"eventbridge-target",
    "className":"acs.eventbridge",
    "config":{
    "RegionId":"cn-hangzhou",
    "AliyunEventBus":"rocketmq-eventbridge"
    }
    }
    ]
    }

    DingTalk ロボットに通知を配信するイベントターゲットの作成:

    POST /target/createEventTargets HTTP/1.1
    Host: demo.eventbridge.com
    Content-Type: application/json; charset=utf-8
    {
    "eventBusName":"demo-bus",
    "eventRuleName":"demo-rule",
    "eventTargets":[
    {
    "eventTargetName":"dingtalk-target",
    "className":"acs.dingtalk",
    "config":{
    "WebHook":"https://oapi.dingtalk.com/robot/send?access_token=b43a54b702314415c2acdae97eda1e092528b7a9dddb31510a5b4430be2ef867",
    "SecretKey":"SEC53483bf496b8f9e0b4ab0ab669d422208e6ccfaedfd5120ea6b8426b9ecd47aa",
    "Body":"{\"template\":\"{\\\"text\\\":{\\\"content\\\":\\\"${content}\\\"},\\\"msgtype\\\":\\\"text\\\"}\",\"form\":\"TEMPLATE\",\"value\":\"{\\\"content\\\":\\\"$.data.body\\\"}\"}"
    }
    }
    ]
    }
  • EventBus にイベントを送信

    最後に、API を介してイベントを送信し、ターゲットエンドポイントが期待どおりに対応するイベントを受信するかどうかを検証します。

    POST /putEvents HTTP/1.1
    Host: demo.eventbridge.com
    Content-Type:"application/cloudevents+json; charset=UTF-8"
    {
    "specversion" : "1.0",
    "type" : "com.github.pull_request.opened",
    "source" : "https://github.com/cloudevents/spec/pull",
    "subject" : "123",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "datacontenttype" : "application/json",
    "data" : {
    "body":"demo"
    },
    "aliyuneventbusname":"demo-bus"
    }