{"id":19556320,"url":"https://github.com/sohutv/mq-proxy","last_synced_at":"2025-09-02T06:38:27.388Z","repository":{"id":105715509,"uuid":"553457248","full_name":"sohutv/mq-proxy","owner":"sohutv","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-19T07:22:24.000Z","size":7200,"stargazers_count":37,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-14T08:41:05.956Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sohutv.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-10-18T08:44:14.000Z","updated_at":"2025-03-10T02:29:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"3ff80dc7-e645-45d1-81a3-1d9ecf083ac8","html_url":"https://github.com/sohutv/mq-proxy","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/sohutv/mq-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sohutv%2Fmq-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sohutv%2Fmq-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sohutv%2Fmq-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sohutv%2Fmq-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sohutv","download_url":"https://codeload.github.com/sohutv/mq-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sohutv%2Fmq-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273244305,"owners_count":25070958,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T04:37:33.027Z","updated_at":"2025-09-02T06:38:27.348Z","avatar_url":"https://github.com/sohutv.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## MQ-Proxy - 基于HTTP协议的[RocketMQ](https://github.com/apache/rocketmq)客户端代理服务\n**它具备以下特性：**\n\n* 支持http协议的消息生产。\n\n* 支持http协议的消息集群模式消费和广播模式消费。\n\n* 支持消费堆积监控预警，借助于[MQCloud](https://github.com/sohutv/mqcloud)实现。\n\n* 支持消费限速，暂停，偏移量重置，消息重发等功能。\n\n* 安全：写操作均在[MQCloud](https://github.com/sohutv/mqcloud)进行操作，然后通知MQ-Proxy，防止篡改。\n\n* 下图简单描述了MQ-Proxy核心定位：\n\n  ![](img/1.png)\n\n**为什么要支持http协议？**\n\n* RocketMQ客户端的逻辑复杂，通信为私有协议。\n* 非java语言的客户端由社区提供，更新不及时，bug较多，兼容性不好。\n* 非java语言客户端若出现生产消费问题，需要精通此种语言和RocketMQ原理的人，成本高昂。\n* 某些语言没有相应的RocketMQ客户端。\n\n基于以上种种问题，MQ-Proxy采用了通用的http协议，实现了生产消费代理服务。\n\n**快速接入之消息生产**\n\n下面举一个jquery的例子，来展示一下如何基于http协议进行消息生产：\n\n```\n\u003cscript\u003e\n    var param = {\n        producer: \"mqcloud-http-test-topic-producer\"\n    };\n\n    function httpProduce() {\n        param.message = \"http生产测试\";\n        $.ajax({\n            type: \"POST\",\n            url: \"http://127.0.0.1:8082/mq/produce\",\n            data: param,\n            success: function (data) {\n                console.log(data)\n                if (data.status == 200) {\n                    console.log(\"send ok\")\n                } else {\n                    // 重试发送\n                    httpProduce()\n                }\n            }, error: function (XmlHttpRequest, textStatus, errorThrown) {\n                console.error(textStatus)\n                // 重试发送\n                setTimeout(\"httpProduce()\", 1000);\n            }\n        });\n    }\n\n    httpProduce()\n\u003c/script\u003e\n```\n\n**快速接入之集群消费**\n\n```\n\u003cscript\u003e\n    var param = {\n        topic: \"mqcloud-json-test-topic\",\n        consumer: \"http-clustering-consumer\"\n    };\n\n    function httpConsume() {\n        $.ajax({\n            type: \"GET\",\n            url: \"http://127.0.0.1:8081/mq/message\",\n            data: param,\n            success: function (data) {\n                if (data.status == 200) {\n                    param.requestId = data.result.requestId;\n                    if (data.result.msgListSize \u003e 0) {\n                        console.log(data.result.status + \",\" + data.result.msgListSize);\n                    }\n                    if (data.result.retryMsgListSize \u003e 0) {\n                    \tconsole.log(data.result.retryMsgListSize);\n                    }\n                } else {\n                    console.log(data.message);\n                }\n                interval = setTimeout(\"httpConsume()\", 1000);\n            }, error: function (XmlHttpRequest, textStatus, errorThrown) {\n                console.error(textStatus)\n                interval = setTimeout(\"httpConsume()\", 1000);\n            }\n        });\n    }\n    httpConsume();\n\u003c/script\u003e\n```\n\n接口说明及更多使用方式请参考MQCloud的http协议生产消费的[使用说明](https://github.com/sohutv/mqcloud/blob/master/mq-cloud/src/main/resources/static/wiki/userGuide/http.md)。\n\n注意：MQ-Proxy依赖于MQCloud，使用前请先搭建好MQCloud环境。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsohutv%2Fmq-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsohutv%2Fmq-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsohutv%2Fmq-proxy/lists"}