国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

阿里云RockMQ與SpringBoot的整合

這篇具有很好參考價值的文章主要介紹了阿里云RockMQ與SpringBoot的整合。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

開源版本Rocket和商業(yè)版本的RocketMQ有些不同,研究的是商業(yè)版本的RocketMQ,阿里云的官方文檔,感覺有點亂??床徽γ靼?,網(wǎng)上雖然有教程,大都還是有點缺少,有時候會突然跳了步驟,抹去了一些細節(jié)。

前置步驟

阿里云MQ開通及子Access賬號的權限的生成

阿里云MQ開通

開通阿里云MQ(現(xiàn)在叫阿里云RocketMQ)百度的教程夠用,不多記錄,需要的參考該地址http://mtw.so/5Q5nHp,進行開通。PS:頁面由于開發(fā)人員一直在更新,教程的頁面不一定和現(xiàn)有頁面完全一樣,所以不要死腦筋。

子Access賬號

阿里云可以為賬號,創(chuàng)建兩個字段,用于你身份的驗證,下圖中可以進入申請子賬戶

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

跳出提示,選擇開始使用子用戶AccessKey

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊 創(chuàng)建用戶

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊確定,會要你驗證手機,輸入驗證碼即可

創(chuàng)建完以后會給你兩個字段的值,一個是AccessKey IDAccessKey Secret一定要及時妥善保存,雖然可以重新創(chuàng)建

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

ps:這里別忘了給賬戶賦予MQ的權限,不然無法進行消息的訂閱和發(fā)送

如何設置權限?

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊添加權限,添加以下權限

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

Topic和Group的創(chuàng)建(在阿里云控制臺頁面進行)

首先創(chuàng)建實例,點擊創(chuàng)建實例

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊確定

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

按提示創(chuàng)建Group和Topic 即可,然后將Group和Topic的名稱,填入到application.properties對應字段中

nameSrvAddr的獲取,在創(chuàng)建好Group和Topic后,從這進入到接入點的獲取頁面

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

接入點有兩個,分別對應了不同的接入方式。TCP和HTTP,我這里用的TCP協(xié)議的接入方式

這里只能獲取到公網(wǎng)的接入地址,沒有內(nèi)網(wǎng)

?

開始開發(fā)

SpringBoot整合阿里云RocketMQ(普通消息為例)

Maven工程

POM文件依賴文章來源地址http://www.zghlxwxcb.cn/news/detail-553336.html

<dependencies>
        <!--主要用來寫WEB接口,這里用來測試MQ的生產(chǎn)者-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--阿里云ons,方便的接入到云服務-->
        <dependency>
            <groupId>com.aliyun.openservices</groupId>
            <artifactId>ons-client</artifactId>
            <version>1.8.4.Final</version>
        </dependency>
        <!--神器,這里主要用來輸出日志@Slf4j-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
        <!--測試用,主要是目的是讓功能帶著spring容器中進行測試-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 </dependencies>

application.properties


#啟動測試之前請?zhí)鎿Q如下 XXX 為您的配置,從阿里云MQ里獲取,具體獲取方式,看下前置步驟
rocketmq.accessKey=xxx
rocketmq.secretKey=xxx
rocketmq.nameSrvAddr=xxx
 
rocketmq.topic=TpMQTest
rocketmq.groupId=GID_MQTEST
rocketmq.tag=*
 
rocketmq.orderTopic=XXX
rocketmq.orderGroupId=XXX
rocketmq.orderTag=*

配置類,用于讀取application.properties中相應字段的值

import com.aliyun.openservices.ons.api.PropertyKeyConst;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
 
import java.util.Properties;
 
@Configuration
@ConfigurationProperties(prefix = "rocketmq")
public class MqConfig {
 
    private String accessKey;
    private String secretKey;
    private String nameSrvAddr;
    private String topic;
    private String groupId;
    private String tag;
    private String orderTopic;
    private String orderGroupId;
    private String orderTag;
 
    public Properties getMqPropertie() {
        Properties properties = new Properties();
        properties.setProperty(PropertyKeyConst.AccessKey, this.accessKey);
        properties.setProperty(PropertyKeyConst.SecretKey, this.secretKey);
        properties.setProperty(PropertyKeyConst.NAMESRV_ADDR, this.nameSrvAddr);
        return properties;
    }
 
    public String getAccessKey() {
        return accessKey;
    }
 
    public void setAccessKey(String accessKey) {
        this.accessKey = accessKey;
    }
 
    public String getSecretKey() {
        return secretKey;
    }
 
    public void setSecretKey(String secretKey) {
        this.secretKey = secretKey;
    }
 
    public String getNameSrvAddr() {
        return nameSrvAddr;
    }
 
    public void setNameSrvAddr(String nameSrvAddr) {
        this.nameSrvAddr = nameSrvAddr;
    }
 
    public String getTopic() {
        return topic;
    }
 
    public void setTopic(String topic) {
        this.topic = topic;
    }
 
    public String getGroupId() {
        return groupId;
    }
 
    public void setGroupId(String groupId) {
        this.groupId = groupId;
    }
 
    public String getTag() {
        return tag;
    }
 
    public void setTag(String tag) {
        this.tag = tag;
    }
 
    public String getOrderTopic() {
        return orderTopic;
    }
 
    public void setOrderTopic(String orderTopic) {
        this.orderTopic = orderTopic;
    }
 
    public String getOrderGroupId() {
        return orderGroupId;
    }
 
    public void setOrderGroupId(String orderGroupId) {
        this.orderGroupId = orderGroupId;
    }
 
    public String getOrderTag() {
        return orderTag;
    }
 
    public void setOrderTag(String orderTag) {
        this.orderTag = orderTag;
    }
}

消費者的注冊類

消費者的build,主要目的是將配置文件里的配置設置到ConsumerBean中,使其在Spring啟動時,一同啟動。

import com.aliyun.openservices.ons.api.MessageListener;
import com.aliyun.openservices.ons.api.PropertyKeyConst;
import com.aliyun.openservices.ons.api.bean.ConsumerBean;
import com.aliyun.openservices.ons.api.bean.Subscription;
import com.aliyun.openservices.springboot.example.config.MqConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
 
//項目中加上 @Configuration 注解,這樣服務啟動時consumer也啟動了
@Configuration
public class ConsumerClient {
 
    @Autowired
    private MqConfig mqConfig;
 
    @Autowired
    private DemoMessageListener messageListener;
 
    @Bean(initMethod = "start", destroyMethod = "shutdown")
    public ConsumerBean buildConsumer() {
        ConsumerBean consumerBean = new ConsumerBean();
        //配置文件
        Properties properties = mqConfig.getMqPropertie();
        properties.setProperty(PropertyKeyConst.GROUP_ID, mqConfig.getGroupId());
        //將消費者線程數(shù)固定為20個 20為默認值
        properties.setProperty(PropertyKeyConst.ConsumeThreadNums, "20");
        consumerBean.setProperties(properties);
        //訂閱關系
        Map<Subscription, MessageListener> subscriptionTable = new HashMap<Subscription, MessageListener>();
        Subscription subscription = new Subscription();
        subscription.setTopic(mqConfig.getTopic());
        subscription.setExpression(mqConfig.getTag());
        subscriptionTable.put(subscription, messageListener);
        //訂閱多個topic如上面設置
 
        consumerBean.setSubscriptionTable(subscriptionTable);
        return consumerBean;
    }
 
}

注冊完成以后,開啟監(jiān)聽,在消息隊列有消息時就會進行消費 @Component這個注解,阿里云官方的Demo,并沒有出現(xiàn),導致一直消費者消費不到消息。后來加上以后就能正常消費消息了

import com.aliyun.openservices.ons.api.Action;
import com.aliyun.openservices.ons.api.ConsumeContext;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
 
@Component
@Slf4j
public class DemoMessageListener implements MessageListener {
 
    @Override
    public Action consume(Message message, ConsumeContext context) {
 
        log.info("Receive: " + message);
        try {
            //do something..
            //Action.CommitMessag 進行消息的確認
            return Action.CommitMessage;
        } catch (Exception e) {
            //消費失敗
            return Action.ReconsumeLater;
        }
    }
}

生產(chǎn)者注冊類

import com.aliyun.openservices.ons.api.bean.ProducerBean;
import com.aliyun.openservices.springboot.example.config.MqConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class ProducerClient {
 
    @Autowired
    private MqConfig mqConfig;
 
    @Bean(initMethod = "start", destroyMethod = "shutdown")
    public ProducerBean buildProducer() {
        ProducerBean producer = new ProducerBean();
        producer.setProperties(mqConfig.getMqPropertie());
        return producer;
    }
}

生產(chǎn)者生產(chǎn)消息工具類

import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.SendResult;
import com.aliyun.openservices.ons.api.bean.ProducerBean;
import com.aliyun.openservices.ons.api.exception.ONSClientException;
import com.aliyun.openservices.springboot.example.config.MqConfig;
import org.springframework.stereotype.Component;
 
/**
 * @description: <h1>RocketMessageProducer rocketMQ消息生產(chǎn)者</h1>
 * @author: LiRen
 **/
@Component
public class RocketMessageProducer {
 
    private static ProducerBean producer;
    private static MqConfig mqConfig;
 
    public RocketMessageProducer(ProducerBean producer, MqConfig mqConfig) {
        this.producer = producer;
        this.mqConfig = mqConfig;
    }
 
    /**
     * @Description: <h2>生產(chǎn) 普通 消息</h2>
     * @author: LiRen
     */
    public  static void producerMsg(String tag, String key, String body) {
        Message msg = new Message(mqConfig.getTopic(), tag, key, body.getBytes());
        long time = System.currentTimeMillis();
        try {
            SendResult sendResult = producer.send(msg);
            assert sendResult != null;
            System.out.println(time
                    + " Send mq message success.Topic is:" + msg.getTopic()
                    + " Tag is:" + msg.getTag() + " Key is:" + msg.getKey()
                    + " msgId is:" + sendResult.getMessageId());
        } catch (ONSClientException e) {
            e.printStackTrace();
            System.out.println(time + " Send mq message failed. Topic is:" + msg.getTopic());
            // TODO 發(fā)送失敗
        }
    }
 
}

WEB接口,測試Controller類

/**
 * ClassName: ProducerController <br/>
 * Description: <br/>
 * date: 2021/11/3 11:05<br/>
 *
 * @author Hesion<br />
 * @version
 * @since JDK 1.8
 */
 
import com.aliyun.openservices.springboot.example.normal.RocketMessageProducer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
/**
 * 測試生產(chǎn)者
 * @author: hesion
 * @create: 2021-11-03 11:05
 **/
@RestController
public class ProducerController {
    /**
     * rocketmq demo
     */
    @RequestMapping(value = {"/useRocketMQ"}, method = RequestMethod.GET)
    public String useRocketMQ() {
 
        RocketMessageProducer.producerMsg("RocketProdTagTest","RocketProdKeyTest","RocketProdBodyTest");
        return "請求成功!";
    }
}

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

好了 代碼就放在下面了

Gitee代碼地址

前言:

開源版本Rocket和商業(yè)版本的RocketMQ有些不同,研究的是商業(yè)版本的RocketMQ,阿里云的官方文檔,感覺有點亂??床徽γ靼祝W(wǎng)上雖然有教程,大都還是有點缺少,有時候會突然跳了步驟,抹去了一些細節(jié)。

前置步驟

阿里云MQ開通及子Access賬號的權限的生成

阿里云MQ開通

開通阿里云MQ(現(xiàn)在叫阿里云RocketMQ)百度的教程夠用,不多記錄,需要的參考該地址http://mtw.so/5Q5nHp,進行開通。PS:頁面由于開發(fā)人員一直在更新,教程的頁面不一定和現(xiàn)有頁面完全一樣,所以不要死腦筋。

子Access賬號

阿里云可以為賬號,創(chuàng)建兩個字段,用于你身份的驗證,下圖中可以進入申請子賬戶

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

跳出提示,選擇開始使用子用戶AccessKey

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊 創(chuàng)建用戶

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊確定,會要你驗證手機,輸入驗證碼即可

創(chuàng)建完以后會給你兩個字段的值,一個是AccessKey IDAccessKey Secret一定要及時妥善保存,雖然可以重新創(chuàng)建

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

ps:這里別忘了給賬戶賦予MQ的權限,不然無法進行消息的訂閱和發(fā)送

如何設置權限?

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊添加權限,添加以下權限

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

Topic和Group的創(chuàng)建(在阿里云控制臺頁面進行)

首先創(chuàng)建實例,點擊創(chuàng)建實例

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

點擊確定

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

按提示創(chuàng)建Group和Topic 即可,然后將Group和Topic的名稱,填入到application.properties對應字段中

nameSrvAddr的獲取,在創(chuàng)建好Group和Topic后,從這進入到接入點的獲取頁面

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

阿里云RockMQ與SpringBoot的整合,MQ,阿里云,rockMQ

接入點有兩個,分別對應了不同的接入方式。TCP和HTTP,我這里用的TCP協(xié)議的接入方式

這里只能獲取到公網(wǎng)的接入地址,沒有內(nèi)網(wǎng)

?

開始開發(fā)

SpringBoot整合阿里云RocketMQ(普通消息為例)

Maven工程

POM文件依賴

到了這里,關于阿里云RockMQ與SpringBoot的整合的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot項目整合阿里云短信業(yè)務(非常詳細)

    SpringBoot項目整合阿里云短信業(yè)務(非常詳細)

    詳細介紹SpringBoot整合阿里云短信服務的每一步過程,同時會將驗證碼存放到Redis中并設置過期時間,盡量保證實戰(zhàn)的同時也讓沒做過的好兄弟也能實現(xiàn)發(fā)短信的功能~ 首先,你需要注冊一個阿里云賬號(如果還沒有),然后在控制臺中創(chuàng)建Access Key。這個Access Key將用于通過AP

    2024年04月27日
    瀏覽(22)
  • springboot整合阿里云oss實現(xiàn)文件上傳

    springboot整合阿里云oss實現(xiàn)文件上傳

    通過阿里云oss進行文件上傳,首先需要開通相關的服務,這邊就不在具體說明,不懂的可以百度看一下。 阿里云oss有幾個關鍵的參數(shù),這也是后續(xù)通過java進行上傳所需要的參數(shù),分別是endpoint(域結(jié)點)、AccessKey ID(秘鑰id)、AccessKey secret(秘鑰)、bucket name(bucket域名)。 ?通過這幾

    2024年01月25日
    瀏覽(23)
  • SpringBoot 整合 MongoDB 連接 阿里云MongoDB

    ? 注:spring-boot-starter-data-mongodb 2.7.5;jdk 1.8? 阿里云MongoDB是 副本集實例的 在網(wǎng)上查找了一番,大多數(shù)都是教連接本地mongodb或者linux上的mongodb 阿里云上有java版連接教程,但它不是SpringBoot方法配置的,是手動寫死的很不方便。 通過程序代碼連接MongoDB副本集實例 下面進行配置

    2024年02月14日
    瀏覽(62)
  • SpringBoot整合阿里云Oss實現(xiàn)文件圖片上傳

    SpringBoot整合阿里云Oss實現(xiàn)文件圖片上傳

    目錄 1. 阿里云Oss注冊使用 2. 項目中使用 2.1 引入依賴以及插件 2.2 編寫配置文件application.properties 2.3 創(chuàng)建常量類,獲取配置信息 ?2.4 serviceImpl中實現(xiàn)邏輯 ? ? ? ? ? ?

    2024年02月08日
    瀏覽(31)
  • 【案例實戰(zhàn)】SpringBoot整合阿里云文件上傳OSS

    【案例實戰(zhàn)】SpringBoot整合阿里云文件上傳OSS

    1.需求背景 C端業(yè)務用戶頭像上傳 海量圖片音頻、視頻存儲 用戶行為日志存儲 (1)阿里云OSS介紹 對象存儲OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存儲服務。其數(shù)據(jù)設計持久性不低于99.9999999999%(12個9),服務設計可用性不低于99.995%。 OSS具

    2024年02月06日
    瀏覽(26)
  • springboot + vue 整合 阿里云 視頻點播 功能

    springboot + vue 整合 阿里云 視頻點播 功能

    1.1、找到視頻點播 1.2、進入管理控制臺 1.2、開通服務 1.3、選擇“按使用流量計費”,開通服務 1.4、開通后,進入管理控制臺 1.5、上傳音 / 視頻 1.6、啟用存儲地址 1.7、已啟用 1.8、選擇上傳的音頻,開始上傳 1.9、上傳成功 1.10、分類管理 1.11、視頻轉(zhuǎn)碼 1.12、再上傳一個視頻

    2024年02月02日
    瀏覽(14)
  • SpringBoot整合阿里云OSS文件存儲解決方案

    SpringBoot整合阿里云OSS文件存儲解決方案

    ?????作者名稱:DaenCode ??作者簡介:啥技術都喜歡搗鼓搗鼓,喜歡分享技術、經(jīng)驗、生活。 ??人生感悟:嘗盡人生百味,方知世間冷暖。 ??所屬專欄:SpringBoot實戰(zhàn) 以下是專欄部分內(nèi)容,更多內(nèi)容請前往專欄查看! 標題 一文帶你學會使用SpringBoot+Avue實現(xiàn)短信通知功能

    2024年02月08日
    瀏覽(24)
  • 全網(wǎng)最詳細SpringBoot、SpringCloud整合阿里云短信服務

    全網(wǎng)最詳細SpringBoot、SpringCloud整合阿里云短信服務

    https://www.aliyun.com/

    2024年02月02日
    瀏覽(21)
  • SpringBoot整合阿里云短信服務詳細過程(保證初學者也能實現(xiàn))

    SpringBoot整合阿里云短信服務詳細過程(保證初學者也能實現(xiàn))

    網(wǎng)上關于實操性的文章普遍大部分都記錄不全,要么只記錄重點部分,對于剛學習的小伙伴來說看起來是比較困難的 所以,基于這一點。 該文章會詳細介紹使用SpringBoot整合阿里云短信服務的每一步過程,同時會將驗證碼存放到Redis中并設置過期時間 , 盡量保證實戰(zhàn)的同時也

    2023年04月15日
    瀏覽(17)
  • 最近項目上需要發(fā)送短信整理了一篇文章 SpringBoot整合阿里云發(fā)送短信

    最近項目上需要發(fā)送短信整理了一篇文章 SpringBoot整合阿里云發(fā)送短信

    阿里云短信服務網(wǎng)址:阿里云登錄 - 歡迎登錄阿里云,安全穩(wěn)定的云計算服務平臺 第一步:申請簽名(一般申請時長在1-2小時之間)特別注意:場景說明不要亂填以免申請不通過 ?第二步:申請短信模板(一般申請時長在1-2小時之間)特別注意:場景說明不要亂填以免申請不

    2024年02月06日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包