桥接数据到 RocketMQ
搭建 RocketMQ 环境,以 Docker-compose为例:
vi docker-compose.yaml
version: '3.5' services: emqx: image: emqx/emqx-ee:4.4.3 container_name: emqx ports: - 18085:18083 - 1885:1883 - 8085:8083 rmqnamesrv: image: foxiswho/rocketmq:server container_name: rmqnamesrv ports: - 9876:9876 volumes: - ./data/logs:/opt/logs - ./data/store:/opt/store rmqbroker: image: foxiswho/rocketmq:broker container_name: rmqbroker ports: - 10909:10909 - 10911:10911 volumes: - ./data/logs:/opt/logs - ./data/store:/opt/store - ./data/brokerconf/broker.conf:/etc/rocketmq/broker.conf - ./tools.sh:/home/rocketmq/rocketmq-4.5.2/bin/tools.sh environment: NAMESRV_ADDR: "rmqnamesrv:9876" JAVA_OPTS: " -Duser.home=/opt" JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m" command: mqbroker -c /etc/rocketmq/broker.conf depends_on: - rmqnamesrv rmqconsole: image: styletang/rocketmq-console-ng container_name: rmqconsole ports: - 8080:8080 environment: JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" depends_on: - rmqnamesrv
## 编辑好yaml文件后 docker-compose up -d
创建规则:
打开 EMQX Dashboard,选择左侧的 “规则” 选项卡。
填写规则 SQL:
SELECT * FROM "t/#"
关联动作:
在 “响应动作” 界面选择 “添加”,然后在 “动作” 下拉框里选择 “桥接数据到 RocketMQ”。
填写动作参数:
“保存数据到 RocketMQ 动作需要两个参数:
1). RocketMQ 的消息主题
2). 关联资源。现在资源下拉框为空,可以点击右上角的 “新建资源” 来创建一个 RocketMQ 资源:
填写资源配置:
填写真实的 RocketMQ 服务器地址,多个地址用,分隔,其他配置保持默认值,然后点击 “测试连接” 按钮,确保连接测试成功。
最后点击 “新建” 按钮。
返回响应动作界面,点击 “确认”。
返回规则创建界面,点击 “新建”。
规则已经创建完成,现在发一条数据:
Topic: "t/1" QoS: 0 Payload: { "msg": "hello" }
然后通过 RocketMQ console dashboard页面上查看消息是否生产成功(ip+8080):
在规则列表里,可以看到刚才创建的规则的命中次数已经增加了 1: