artemis小結

本文主要小結一下artemis的一些知識點html

artemis知識點

消息模型

它實現了mqtt、aqmp、stomp協議,jms的api,還提供了rest的api;其模型跟aqmp很像,用address、queue來抽象,其Routing Types有Anycast( point-to-point)、Multicast( publish-subscribe)兩種類型

client、server端的flow control

經過credit以及windowSize來控制

client、server端的rebalance

client端有ConnectionLoadBalancingPolicy,server端有MessageLoadBalancingType、Redistributor

client、server端的interceptor

內置了client、server的interceptor,方便攔截添加邊緣邏輯

投遞模式:at-most-once、at-least-once、exactly-once

exactly-once須要事務支持,不過能夠經過服務端去重

消費模型:推、拉、仍是推拉結合、ack模式

推拉結合的,同步receive方式就是拉的方式,消費者主動去消息服務器取消息,異步的listener方式爲推的方式

特性消息:延遲消息、優先級消息、持久消息、TTL消息、死信消息

延時消息:postOffice添加消息的時候( 持久化消息的話先持久化)會檢查HDR_SCHEDULED_DELIVERY_TIME屬性,添加到scheduledReferences,而後進行scheduleDelivery,時間到了就從scheduledReferences移除添加到真正的隊列中;server重啓的話,會從store中恢復scheduledReferences隊列

優先級消息:經過PriorityLinkedList,消息分級存儲,取的時候按優先級合併在一塊兒docker

TTL消息:有個ExpiryScanner來定時檢查消息是否過時,過時的話將消息移動到expiry addressapache

cluster、federation

cluster適用於內網,federation適用於公網進行消息複製

ha及failover及發送重試

ha支持replication、shared-store、live-only;failover的時候會對client的session進行轉移,讓client端保持透明

graceful shutdown

在shutdown的時候作各類資源銷燬

logger日誌

jboss-logmanager,還支持audit log

rest api

官方還提供了rest api,像kafka是Confluent提供了REST Proxy

metrics支持

內置支持metrics,屬於硬編碼的方式,提早設計好

docker支持

提供基於centos及ubuntu的docker文件

test支持

有豐富的各類測試,好比junit( 提供了專門的TestRule)、smoke、stress、timing等

小結

artemis算是系出名門,代碼裏頭頗有企業級產品的味道,還值得深刻研究研究ubuntu

doc

相關文章
相關標籤/搜索