java B2B2C Springcloud多租戶電子商城系統-訊息佇列之ActiveMQ
什麼是ActiveMQ?
ActiveMQ 是Apache出品,最流行的,能力強勁的開源訊息匯流排。ActiveMQ 是一個完全支援JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。
主要特點:
- 多種語言和協議編寫客戶端。語言: Java, C, C++, C#, Ruby, Perl, Python, PHP。應用協議: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
- 完全支援JMS1.1和J2EE 1.4規範 (持久化,XA訊息,事務)
- 對Spring的支援,ActiveMQ可以很容易內嵌到使用Spring的系統裡面去,而且也支援Spring2.0的特性
- 通過了常見J2EE伺服器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何相容J2EE 1.4 商業伺服器上
- 支援多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
- 支援通過JDBC和journal提供高速的訊息持久化
- 從設計上保證了高效能的叢集,客戶端-伺服器,點對點
- 支援Ajax
- 支援與Axis的整合
- 可以很容易得呼叫內嵌JMS provider,進行測試
ActiveMQ的訊息形式:
對於訊息的傳遞有兩種型別:
一種是點對點的,即一個生產者和一個消費者一一對應;
另一種是釋出/訂閱模式,即一個生產者產生訊息並進行傳送後,可以由多個消費者進行接收。
JMS定義了五種不同的訊息正文格式,以及呼叫的訊息型別,允許你傳送並接收以一些不同形式的資料,提供現有訊息格式的一些級別的相容性。
· StreamMessage – Java原始值的資料流
· MapMessage–一套名稱-值對
· TextMessage–一個字串物件
· ObjectMessage–一個序列化的 Java物件
· BytesMessage–一個位元組的資料流
ActiveMQ訊息確認機制
訊息只有在被確認之後,才認為已經被成功消費,然後訊息才會從佇列或主題中刪除。訊息的成功消費通常包含三個階段:
(1)、客戶接收訊息;(2)、客戶處理訊息;(3)、訊息被確認;
確認機制前面提過一下,共有四種:
(1)、Session.AUTO_ACKNOWLEDGE;客戶(消費者)成功從receive方法返回時,或者從MessageListener.onMessage方法成功返回時,會話自動確認訊息,然後自動刪除訊息.
(2)、Session.CLIENT_ACKNOWLEDGE;客戶通過顯式呼叫訊息的acknowledge方法確認訊息,。 即在接收端呼叫message.acknowledge();方法,否則,訊息是不會被刪除的.
(3)、Session. DUPS_OK_ACKNOWLEDGE ;不是必須確認,是一種“懶散的”訊息確認,訊息可能會重複傳送,在第二次重新傳送訊息時,訊息頭的JMSRedelivered會被置為true標識當前訊息已經傳送過一次,客戶端需要進行訊息的重複處理控制。
(4)、 Session.SESSION_TRANSACTED;事務提交併確認。
需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼請加企鵝求求 :二一四七七七五六三三