本文主要小結一下artemis的一些知識點html
它實現了mqtt、aqmp、stomp協議,jms的api,還提供了rest的api;其模型跟aqmp很像,用address、queue來抽象,其Routing Types有Anycast(point-to-point
)、Multicast(publish-subscribe
)兩種類型
經過credit以及windowSize來控制
client端有ConnectionLoadBalancingPolicy,server端有MessageLoadBalancingType、Redistributor
內置了client、server的interceptor,方便攔截添加邊緣邏輯
exactly-once須要事務支持,不過能夠經過服務端去重
推拉結合的,同步receive方式就是拉的方式,消費者主動去消息服務器取消息,異步的listener方式爲推的方式
延時消息:postOffice添加消息的時候(持久化消息的話先持久化
)會檢查HDR_SCHEDULED_DELIVERY_TIME屬性,添加到scheduledReferences,而後進行scheduleDelivery,時間到了就從scheduledReferences移除添加到真正的隊列中;server重啓的話,會從store中恢復scheduledReferences隊列優先級消息:經過PriorityLinkedList,消息分級存儲,取的時候按優先級合併在一塊兒docker
TTL消息:有個ExpiryScanner來定時檢查消息是否過時,過時的話將消息移動到expiry addressapache
cluster適用於內網,federation適用於公網進行消息複製
ha支持replication、shared-store、live-only;failover的時候會對client的session進行轉移,讓client端保持透明
在shutdown的時候作各類資源銷燬
jboss-logmanager,還支持audit log
官方還提供了rest api,像kafka是Confluent提供了REST Proxy
內置支持metrics,屬於硬編碼的方式,提早設計好
提供基於centos及ubuntu的docker文件
有豐富的各類測試,好比junit(
提供了專門的TestRule
)、smoke、stress、timing等
artemis算是系出名門,代碼裏頭頗有企業級產品的味道,還值得深刻研究研究ubuntu