message-pipe v1.0.1 發布,支持 Nacos 服務發現

2020-12-18 開源中國

Message Pipe

基於Redis實現的分布式消息順序消費管道。

GitHub地址:https://github.com/minbox-projects/message-pipe

Gitee地址:https://gitee.com/minbox-projects/message-pipe

I. 什麼是Message Pipe?

Message Pipe是基於Redis實現的順序消息管道,由於內部引入了Redisson分布式鎖所以它是線程安全的,多線程情況下也會按照寫入管道的順序執行消費。

Message Pipe採用ClientServer概念進行設計,內部通過grpc-netty來建立消息通道相互通信的長連接,消息的分發由Server負責,而每一個管道內的消息在分發時會通過LoadBalance(負載均衡)的方式來獲取在線的Client信息並向Client順序發送消息。

II. 更新日誌

✨ New Features

  • [ #39 ] Client通過 "Cglib動態代理" 的方式實現動態綁定管道
  • [ #40 ] Client/Server 通過正則表達式進行匹配 "pipeName"
  • [ #41 ] 禁用Server接收註冊請求後根據每一個"Pipe Name"創建消息管道
  • [ #47 ] 使用Jackson代替fastjson轉換實體與json字符串之間的相互轉換方式
  • [ #51 ] MessageProcessor新增正則表達式方式處理消息,並為每個匹配的表達式管道建立一個Porxy代理類
  • [ #59 ] Server啟動時自動加載Redis內的消息管道列表,並自動創建MessagePipe實例
  • [ #64 ] 重構Client連接Server的實現方式,新增支持Nacos NamingService方式

🐛 Fix Bugs

  • [ #45 ] 修復Client啟動時一直重試註冊到Server,導致阻塞主線程
  • [ #48 ] 刪除客戶端ReceiveMessageService處理消息時使用線程池
  • [ #53 ] 修復Redisson在高並發下出現的解鎖異常
  • [ #55 ] 修復獲取MessageProcessors實例時可能出現線程安全性問題
  • [ #57 ] 消息分發時,只有存在客戶端列表才進行處理消息發送邏輯
  • [ #61 ] Server運行過程中CPU飆升
  • [ #65 ] Client註冊時偶爾會出現獲取IP位址為 "127.0.0.1"的情況

III. 特性

  • 自動註冊
  • 心跳檢查
  • 消息分發
  • 順序消費
  • 讀寫分離
  • 線程安全
  • 負載均衡
  • 自動剔除

IIII. 快速上手

為了快速上手,提供了message-pipe使用的示例項目,項目源碼:https://github.com/minbox-projects/message-pipe-example。

4.1 安裝Redis

由於message-pipe基於Redis實現,所以我們首先需要在本機安裝Redis,下面是使用Docker方式安裝步驟:

# 拉取Redis鏡像docker pull redis# 創建一個名為"redis"的後臺運行容器,埠號映射宿主機6379docker run --name redis -d -p 6379:6379 redis

4.2 查看Redis數據

# 運行容器內命令docker exec -it redis /bin/sh# 運行Redis客戶端redis-cli# 選擇索引為1的資料庫select 1# 查看全部的數據keys *

4.3 啟動示例項目

# 下載源碼git clone https://github.com/minbox-projects/message-pipe-example.git# 進入項目目錄cd message-pipe-example# 運行項目mvn spring-boot:run

V. License

message-pipe採用Apache2開源許可進行編寫。

相關焦點

  • Nacos 1.0.0 GA,架構、功能與 API 設計全面重構
    一個典型的使用分組的例子如下:namingService.registerInstance("nacos.test.1", "group1", instance);不指定分組的接口依然是支持的,此時會在服務端為這個服務分配一個默認的分組:DEFAULT_GROUP。
  • Sentinel Dashboard(基於1.8.1)流控規則持久化到Nacos——涉及...
    源碼中的FlowControllerV1類,這個類中包含流控規則本地化的CRUD操作;在com.alibaba.csp.sentinel.dashboard.controller.v2包下存在一個FlowControllerV2;類,這個類同樣提供流控規則的CURD,與V1不同的是,它可以實現指定數據源的規則拉取和發布。
  • SpringBoot+ Dubbo + Mybatis + Nacos +Seata整合來實現Dubbo分布式事務
    2.環境準備2.1 下載nacos並安裝啟動nacos下載:https://github.com/alibaba/nacos/releases/tag/1.1.3Nacos 快速入門:https://nacos.io/en-us/docs/quick-start.html
  • DRYCC Workflow v1.3.0 版本發布
    自從微軟收購了DEIS團隊,它已經停止更新,所以我們決定努力建立一個全新的開放的開發者社區,我們邀請所有人加入我們,幫助建立下一代PaaS雲服務。DRYCC工作流是一個開源的平臺即服務(PaaS),它為任何kubernetes集群添加了一個開發人員友好的層,使應用程式的部署和管理變得容易。
  • Apache MXNet 發布 v0.11.0版,支持蘋果Core ML和Keras v1.2
    近日,孵化於 Apache 軟體基金會 Apache MXNet 發布了 v0.11.0 最終測試版本,它不僅具有一個 Core ML 模型轉換器,同時還支持 Keras v1.2。此外,該版本還包括額外的功能更新、性能提升以及一些修復。你可以從原始碼構建 MXNet 從而獲取新版本。
  • Nacos配置管理基礎應用
    Group:代表某項目,如XX醫療項目、XX電商項目DataId:每個項目下往往有若干個工程,每個配置集(DataId)是一個工程的主配置文件 獲取某配置集的代碼:獲取配置集需要指定:1、nacos服務地址
  • JPress v3.0 alpha.1 發布
    Press v3.0 alpha.1 發布了, v3.0 比 v2.0 主要是增加了支付的能力,感謝大家的關注,讓 JPress
  • Tabris.js 1.0.0 發布,原生移動應用框架
    Tabris.js 1.0.0 發布,此版本更新內容如下:重命名屬性 foreground 名字為
  • Jsonnet-PHP v1.2.0 發布, PHP 支持 Jsonnet 擴展
    Jsonnet-PHP v1.2.0發布了,JsonNet-PHP是Google Jsonnet對PHP的支持擴展,該版本使用最新版本至v0.9.5的LibJsonnet。
  • aelf Enterprise 1.0.0 Preview 1 版正式發布
    3月27日,aelf Enterprise 1.0.0 Preview 1 版正式發布。aelf Enterprise 1.0.0 preview 1 版是一個整體的區塊鏈商業化解決方案,包含完備的區塊鏈系統、開發套件、開發文檔、以及配套的基礎應用和基礎服務。
  • pacebox-springboot 1.0.9 發布,Java 生態框架
    pacebox-springboot 融合封裝已發布,旨在提供快速開發腳手架、打造更好的開源生態環境。希望有志同道合的朋友一起維護該軟體、打造一款快速應用開發級生態框架。
  • Mesalink v1.0.0 發布,正式支持 TLS 1.3 和 IPv6,支持CMake編譯...
    2018年4月2日我們發布了MesaLink的第一個公開版本0.6.0。在過去的一年裡,我們陸續發布了七個版本,並在百度的智能電視、智能音箱、智能車載等生產環境項目中得到了廣泛的測試和部署,月活躍用戶數量於2018年末突破1000萬。
  • 圖資料庫 Nebula Graph v.1.0.0-beta 發布
    作為唯一能夠存儲萬億個帶屬性的節點和邊的在線圖資料庫,Nebula Graph 不僅能夠在高並發場景下滿足毫秒級的低時延查詢要求,還能夠實現服務高可用且保障數據安全性。Nebula Graph v1.0.0-beta 版本已發布,更新內容如下:Storage Engine 支持集群部署 引入 Raft 一致性協議,支持 Leader 切換 存儲引擎支持 HBase 新增從 HDFS 導入數據功能
  • A.CTable 框架 v1.4.0.RELEASE 發布
    A.CTable框架 v1.4.0.RELEASE 已經發布。
  • TeaWeb v0.1.5 發布,支持 HTTPS 證書申請、HTTP 隧道功能
    TeaWeb是一個可視化的Web代理服務,目標是將代理服務、日誌、統計、監控等集成在同一個服務中
  • DRYCC Workflow v1.3.0 版本發布 - OSCHINA - 中文開源技術交流社區
    DRYCC工作流包括通過git push從原始碼構建和部署的功能、簡單的應用程式配置、創建和回滾發布、管理域名和SSL證書、提供無縫邊緣路由、聚合日誌以及與團隊共享應用程式。所有這些都是通過一個簡單的RESTAPI和命令行接口公開的。
  • Selenium v2.45.0 發布,支持 Firefox 36
    Selenium v2.45.0 發布,此版本現已提供下載:http://selenium-release.storage.googleapis.com/2.45/selenium-server-standalone
  • ActFramework R1.4.0 帶來 WebSocket 支持
    ActFramework R1.4.0 發布了,R1.4.0版最重要的更新是 WebSocket 的支持#17 WebSocket 支持ActFramework 終於支持 WebSocket
  • SOP 3.1.0 發布,開放平臺解決方案項目
    SOP 3.1.0 發布,本次更新內容如下: 新增路由監控功能 新增路由攔截器  doc 優化負載均衡策略
  • pacebox-springboot 1.0.8 發布,java 生態框架
    pacebox-springboot 融合封裝已發布,旨在提供快速開發腳手架、打造更好的開源生態環境。