真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在微服務中如何規(guī)范化使用RabbitMQ

這篇文章主要為大家展示了“在微服務中如何規(guī)范化使用RabbitMQ”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“在微服務中如何規(guī)范化使用RabbitMQ”這篇文章吧。

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站建設、成都做網(wǎng)站、澄海網(wǎng)絡推廣、小程序制作、澄海網(wǎng)絡營銷、澄海企業(yè)策劃、澄海品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供澄海建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

 

典型應用場景

在微服務中如何規(guī)范化使用RabbitMQ  
RabbitMQ典型應用場景

此圖展示了RabbitMQ的典型應用場景,生產(chǎn)者把消息發(fā)送到Exchange,消費者從Queue讀取消息,消息可通過topic、header、direct、fanout四種方式由Exchange路由到Queue。

在微服務中的開發(fā)過程中,如果任由開發(fā)者定義Exchange、Queue以及路由方式,即便優(yōu)秀的程序員正確定義了這些要素,服務依賴會生成一個巨復雜的網(wǎng)狀結(jié)構(gòu),管理起來必定是災難。所以要對使用進行規(guī)范,這是技術管理應有之意。

通過文檔定義規(guī)范,這種約束是弱勢的,需要不斷核查規(guī)范的實施情況。通過代碼、架構(gòu)定義規(guī)范,在不需要開發(fā)者介入的情況下執(zhí)行規(guī)范,屏蔽程序的復雜性,是架構(gòu)師需要考慮的問題。優(yōu)秀的架構(gòu)使開發(fā)過程簡單化、規(guī)范化,使程序員專注業(yè)務開發(fā),提升業(yè)務開發(fā)的效率。

按照這種指導思想,對RabbitMQ的使用進行了規(guī)范和約束。

 

微服務應用規(guī)范化

在微服務中如何規(guī)范化使用RabbitMQ  
微服務中的應用場景

約束如下:

  1. 如若服務啟用了Producer,則創(chuàng)建與服務名相同的Exchange,發(fā)送消息到此Exchange。

  2. 如若服務啟用了Consumer,則創(chuàng)建與服務名相同的Queue,從此Queue中訂閱消息。

  3. 讀取程序中定義的Receiver,解析定義的service(其實就是Exchange名字)和tag,創(chuàng)建Queue到Exchange的綁定關系。

  4. 以上過程,在服務啟動時執(zhí)行,無需程序員干預。

優(yōu)點:程序員無需關注消息發(fā)給誰,只需要調(diào)用服務發(fā)送消息即可;程序員無需關注消息如何路由,只需要為自己關心的tag,定義receiver處理類。另外,因為采用統(tǒng)一的api發(fā)送和接收,為未來的擴展提供了便利。

缺點:每個服務只有一個Exchange,只有一個Queue,并且只使用了Topic路由;所以,性能并不是最優(yōu)的,只能在中度或輕度處理場景中使用。如若有個性化的處理場景,還是需要自定義這些組件的。

綜述:在AntSentry的微服務體系中,大流量量使用了Kinesis隊列(類kafka),大并發(fā)使用了點對點的SQS隊列,RabbitMQ只是用來解決服務之間的調(diào)用問題,流量并不會太大,其靈活性彌補了Kinesis和SQS的不足,在這個特有的場景中,滿足了業(yè)務需求。在大多數(shù)的微服務場景中,這種應用模式是可以滿足大多數(shù)的需求的,希望對你有所幫助。

 

使用方法

1)修改pom,升級api版本(此項目并未開源,公司內(nèi)部使用)


    xx
    cloud-api-tools
    1.3.3-SNAPSHOT

 

2)采用自定義AutoConfig,配置后即按照規(guī)范啟用了rabbitmq

com:
  xx:
    rabbitmq:
      host: 10.30.60.41
      password: XX
      userName: xx
      port: 5672
      vhost: dev
 

3)創(chuàng)建消息實體

@Data
public class XXDemoInfo extends MQMessage {
 
    @Override
    public String getTag() {
        return "work";  // 消息的標識
    }
 
    private String name;
    private Long timestamp;
}
 

4)創(chuàng)建接受者,配置消息的來源以及tag;可配置多個注解,實現(xiàn)一個receiver處理多種tag

@RabbitMQReceiver(service = "cloud-xx-service", tag = "work") 
public class XXTagReceiver implements RabbitMQBaseReceiver {
 
    @Override
    public void receive(XXDemoInfo xxDemoInfo) {
 
    }
}
 

5)發(fā)送消息示例

@Autowired
RabbitMQSender sender;
 
 
public void send() {
    XXDemoInfo info = new XXDemoInfo();
    info.setName("Test Message");
    info.setTimestamp(System.currentTimeMillis());
    sender.send(info);
}
 
  1. 配置ReceiverScan
@RabbitMQReceiverScan(basePackages = {"com.xx.receiver"})
// 填寫receiver類所在的包
public class SomeApplication implements CommandLineRunner{

}
   

實現(xiàn)關鍵技術

這里感覺沒什么好講的,總不能貼出來大片的代碼吧!就把啟動過程簡單畫一下吧。

在微服務中如何規(guī)范化使用RabbitMQ  

以上是“在微服務中如何規(guī)范化使用RabbitMQ”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


標題名稱:在微服務中如何規(guī)范化使用RabbitMQ
網(wǎng)站URL:http://weahome.cn/article/igpioh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部