1 Star 2 Fork 0

Seventeen / mq-proxy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

logo

介绍

消息代理系统

RocketMQ的客户端SDK代理。针对企业使用RocketMQ因没有相应语言的稳定SDK,且想通过RocketMQ进行系统通信的解决方案。

作者在2016年开发第一个应用于生产环境的程序,用于某上市互联网公司Java应用与PHP应用通过RocketMQ通信。后续还支持了某D轮互联网公司PHP&GO应用接入RocketMQ,单日峰值处理消息量 5000w+。

杭州市萧山区/滨江区的企业使用,免费提供技术支持,保障生产环境稳定性。

软件架构

软件架构说明

  • 消息代理管理后台:Ruoyi-Vue
  • 消息代理服务:SpringBoot Rocketmq-client Mybatis HttpClient

使用说明

消息生产

  1. 配置生产者代理 logo
  2. 发送消息

通过HTTP请求代理服务接口实现消息发送

  • 请求方式:POST application/json
  • 接口路径:/mq/proxy/sendMessage/sendSync
  • 入参:
{
    "topic": "demo-topic", 
    "tag": "tagA",
    "keys": "dfd434", //非必须字段
    "message": "hello world",
    "producerGroupName": "demo-producer"
}
  • 接口返回:
{
    "msg": "消息发送成功",
    "code": 200
}

根据code值判断消息是否发送成功

消息消费

  1. 配置消费者代理 logo
  2. 消息消费
  • 消费代理会根据配置将对应的消息发送到被代理系统的HTTP接口(配置的appUrl地址)
  1. 被代理系统接口

例如:某PHP系统开发消息消费接口

  • 请求方式:POST application/json
  • 接口路径:自定义,与配置的appUrl路径一致
  • 入参:

{
    "topic":"demo-topic",
    "tag":"tagA",
    "message":"hello world",
    "msgId":"DFDf434",
    "keys":"dfd434"
}

其中 message 为需要处理的消息内容,其他的是消息的属性信息,例如可以在发送消息时传递keys来做消息幂等性消费。

  • 接口返回结果为简单的字符串

消费成功返回:SUCCESS 消费失败返回:FAIL

部署文档

前端应用

开发


# 进入项目目录
cd admin-ui

# 安装依赖
npm install

# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npmmirror.com

# 启动服务
npm run dev 

浏览器访问 http://localhost:80

发布

# 构建测试环境
npm run build:stage

# 构建生产环境
npm run build:prod

管理后台

配置

mq-proxy-admin模块,src/main/resources中application-dev.yml

# 开发环境配置
server:
    # 服务器的HTTP端口,默认为8080
    port: 8080
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://127.0.0.1:3306/mq_proxy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: 123456
    # redis 配置
    redis:
        # 地址
        host: 127.0.0.1
        # 端口,默认为6379
        port: 6379
        # 数据库索引
        database: 0
        # 密码
        password: 123456

数据库【与代理服务同库】

服务启动

logo

# 执行命令:
java –jar mq-proxy-admin.jar

多环境部署

例如:src/main/resources中新建application-prod.yml

# 启动时,通过命令行参数的方式指定配置属性:
java -jar mq-proxy-admin.jar --spring.profiles.active=prod

代理服务

配置

mq-proxy-server模块,src/main/resources中application-dev.yml

# 基础配置
mq:
    proxy:
        # RocketMQ NameServer地址
        nameServer: 127.0.0.1:9876
# 开发环境配置
server:
    # 服务器的HTTP端口,默认为19876
    port: 19876
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 数据源
            master:
                url: jdbc:mysql://127.0.0.1:3306/mq_proxy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: 123456

配置RocketMQ NameServer地址,数据库【与管理后台同库】,服务端口。

服务启动

logo

# 执行命令:
java –jar mq-proxy-server.jar

多环境部署

例如:src/main/resources中新建application-prod.yml

# 启动时,通过命令行参数的方式指定配置属性:
java -jar mq-proxy-server.jar --spring.profiles.active=prod
  • 部署多个mq-proxy-server节点后,使用Nginx / 阿里云SLB等进行负载均衡
  • 发送消息调用的接口地址使用Nginx / 阿里云SLB的地址

交流

钉钉群:40650002839

The MIT License (MIT) Copyright (c) 2018 MQ-PROXY & RuoYi Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

RocketMQ的客户端SDK代理。针对企业使用RocketMQ因没有相应语言的稳定SDK,且想通过RocketMQ进行系统通信的解决方案。 展开 收起
Java 等 5 种语言
MIT
取消

发行版 (3)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/lyhome_admin/mq-proxy.git
git@gitee.com:lyhome_admin/mq-proxy.git
lyhome_admin
mq-proxy
mq-proxy
master

搜索帮助