ActiveMQ用法記錄

此文記錄自己在使用ActiveMQ的時候一下用法和心得。

p2p:模式

在這個模式中,一個消息隊列可以有多個訂閱者,一條消息只會被一個訂閱者消費,多個訂閱者之間是競爭關係。使用這種特性,可以構建分佈式的處理服務,比如訂單系統,一個訂單只需要處理一次,當訂單量很大的時候,可以上多個訂單處理服務,多個訂單處理服務挨個讀取消息隊列裏面的消息進行處理。

假設A和B都是兩個訂單處理服務,a:01234567898是訂單,A和B都是用P2P模式,此時AB處理的方式大概如下圖:

A接收消息:{a:0}
B接收消息:{a:1}
A接收消息:{a:2}
B接收消息:{a:3}
A接收消息:{a:4}
B接收消息:{a:5}
A接收消息:{a:6}
B接收消息:{a:7}
A接收消息:{a:8}
B接收消息:{a:9}

 

代碼中處理消息

consumer.setMessageListener(new MessageListener() {
				
				public void onMessage(Message arg0) {
					TextMessage message = (TextMessage) arg0;
					try {
						Thread.sleep(3000);
					} catch (InterruptedException e1) {
						e1.printStackTrace();
					}
					try {
						System.out.println("A接收消息:"+message.getText());
					} catch (JMSException e) {
						e.printStackTrace();
					}
				}
			});

消費者在消費的時候,是同步的,需要等onMessage處理完成之後,才能繼續處理下一個消息。

消費者消費失敗處理

activeMQ可以使用消費端主動確認消費結果的設定,如果啓用該模式,那麼每條消息消費結果將由消費者上報給消息服務器。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章