網上眾說紛紜。有的說啟動命令不對,有的說rocketmq預設不允許開發者私自建立topic。最後手動建立topic。但是發現消費不了訊息,很奇怪。今天我又重新安裝了一遍rocketmq。測試了一下發現還可以。
上圖是rocketmq的架構圖。我們必須要對上述的一些組建或者結點做一些說明解釋:
producter:訊息生產者
consumer:訊息的消費者
nameserver:名稱服務。這個組建相當於註冊中心一樣。consumer獲取訊息,是從broker來獲取的。producter產生的訊息會通過nameserver路由到指定的broker.然後broker通過路由規則分發給consumer。
topic:乙個分布式訊息佇列中介軟體部署好以後,可以給很多個業務提供服務,同乙個業務也有不同型別的訊息要投遞, 這些不同型別的訊息以不同的topic 名稱來區分。所以傳送和接收訊息前,先建立topic , 針對某個topic 傳送和接收消
息。有了top ic 以後,還需要解決效能問題。如果乙個topic 要傳送和接收的資料量非常大, 需要能支援增加並行處理的機器來提高處理速度,這時候乙個topic 可以根據需求設定乙個或多個message queue, message queue 類似
分割槽或partition 。topic 有了多個message queue 後,訊息可以並行地向各個message queue 傳送,消費者也可以並行地從多個message queue 讀取訊息並消費。
下面是示例**:
org.apache.rocketmq
rocketmq-client
4.3.0
producter:
import org.apache.rocketmq.client.producer.defaultmqproducer;
import org.apache.rocketmq.client.producer.sendresult;
import org.apache.rocketmq.common.message.message;
import org.apache.rocketmq.remoting.common.remotinghelper;
/** * @author gosaint
*/public class syncproducer
producer.shutdown();}}
consumer:
import org.apache.rocketmq.client.consumer.defaultmqpushconsumer;
import org.apache.rocketmq.client.consumer.listener.consumeconcurrentlycontext;
import org.apache.rocketmq.client.consumer.listener.consumeconcurrentlystatus;
import org.apache.rocketmq.client.consumer.listener.messagelistenerconcurrently;
import org.apache.rocketmq.client.exception.mqclientexception;
import org.apache.rocketmq.common.message.messageext;
/** * @author gosaint
*/public class consumer
});consumer.start();
system.out.printf("consumer started.%n");}}
RocketMq入門案例
修改社交會員 封裝傳送入參 socialmember socialmember newsocialmember socialmember setlastupd newdate 大資料要求設定修改時間 string getmid socialmember setmid request getdata ...
rocketmq 入門(二)實戰demo
參考文章 rocketmq實戰 啟動rocketmq的namesrv 啟動rocketmq的broker 建立乙個簡單的springboot專案 pom4.0.0 com.squid.rocketmq rocketmq test 1.0 snapshot org.springframework.bo...
Ajax入門示例
第乙個ajax入門示例,註冊頁面,當輸入使用者名稱時,非同步傳送請求驗證使用者名稱是否可以用。jsp頁面 如下 usernameservlet 如下 response.setcontenttype text html response.setcharacterencoding utf 8 print...