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-connect-eventbridge-jar-with-dependencies.jar
- rocketmq-connect-dingtalk-jar-with-dependencies.jar
- connect-cloudevent-transform-jar-with-dependencies.jar
- connect-filter-transform-jar-with-dependencies.jar
- connect-eventbridge-transform-jar-with-dependencies.jar
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-eventbridgeEventBridge の起動
sh bin/eventbridge.sh start
デフォルトのログディレクトリは ~/rocketmq-eventbridge/rocketmq-eventbridge.log にあります。これは、log.path と app.name を変更することで変更できます。ログを使用して、サービスが適切に起動したかどうかを確認できます:
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"
}