最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決SpringBoot2.1.0+RocketMQ版本沖突問題

 更新時間:2024年06月17日 15:32:28   作者:萬物~  
這篇文章主要介紹了解決SpringBoot2.1.0+RocketMQ版本沖突問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

介紹

  • 我的項目使用的是springboot2.1.0
  • rocketmq-spring-boot-starter 使用的是2.0.2
  • RocketMQ-client使用的版本是4.3.2
  • RocketMQ使用阿里云的docker搭建

列一下主要的pom

<!--RocketMQ相關-->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.4.0</version>
        </dependency>

application.properties配置

# RocketMQ相關配置
spring.rocketmq.nameServer=ip:9876
spring.rocketmq.producer.group=test

代碼

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

     public void test(){
        try {
            // 使用rockMq發(fā)送消息
            HashMap<String, Object> msg = new HashMap<>(2);
            msg.put("id",user.getId());
            msg.put("mobile",mobile);
            msg.put("date",new Date());
            this.rocketMQTemplate.convertAndSend("login",msg);
        }catch (Exception e){
            LOGGER.error("發(fā)送消息出錯",e);
        }
}

然后關鍵來了,項目啟動后報錯

Description:

Field rocketMQTemplate in com.tanhua.sso.service.UserService required a bean of type 'org.apache.rocketmq.spring.core.RocketMQTemplate' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)

The following candidates were found but could not be injected:
    - Bean method 'rocketMQTemplate' in 'RocketMQAutoConfiguration' not loaded because @ConditionalOnProperty (rocketmq.name-server) did not find property 'name-server'


Action:

Consider revisiting the entries above or defining a bean of type 'org.apache.rocketmq.spring.core.RocketMQTemplate' in your configuration.

這里網上查了很多資料都沒有解決,定位到問題的原因是因為org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration類的問題

@Configuration
@EnableConfigurationProperties(RocketMQProperties.class)
@ConditionalOnClass({ MQAdmin.class, ObjectMapper.class })
@ConditionalOnProperty(prefix = "rocketmq", value = "name-server")
@Import({ JacksonFallbackConfiguration.class, ListenerContainerConfiguration.class })
@AutoConfigureAfter(JacksonAutoConfiguration.class)
public class RocketMQAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean(DefaultMQProducer.class)
    @ConditionalOnProperty(prefix = "rocketmq", value = {"name-server", "producer.group"})
    public DefaultMQProducer defaultMQProducer(RocketMQProperties rocketMQProperties) {
        RocketMQProperties.Producer producerConfig = rocketMQProperties.getProducer();
        String nameServer = rocketMQProperties.getNameServer();
        String groupName = producerConfig.getGroup();
        Assert.hasText(nameServer, "[rocketmq.name-server] must not be null");
        Assert.hasText(groupName, "[rocketmq.producer.group] must not be null");

        DefaultMQProducer producer;
        String ak = rocketMQProperties.getProducer().getAccessKey();
        String sk = rocketMQProperties.getProducer().getSecretKey();
        if (!StringUtils.isEmpty(ak) && !StringUtils.isEmpty(sk)) {
            producer = new DefaultMQProducer(groupName, new AclClientRPCHook(new SessionCredentials(ak, sk)),
                rocketMQProperties.getProducer().isEnableMsgTrace(),
                rocketMQProperties.getProducer().getCustomizedTraceTopic());
            producer.setVipChannelEnabled(false);
        } else {
            producer = new DefaultMQProducer(groupName, rocketMQProperties.getProducer().isEnableMsgTrace(),
                rocketMQProperties.getProducer().getCustomizedTraceTopic());
        }

        producer.setNamesrvAddr(nameServer);
        producer.setSendMsgTimeout(producerConfig.getSendMessageTimeout());
        producer.setRetryTimesWhenSendFailed(producerConfig.getRetryTimesWhenSendFailed());
        producer.setRetryTimesWhenSendAsyncFailed(producerConfig.getRetryTimesWhenSendAsyncFailed());
        producer.setMaxMessageSize(producerConfig.getMaxMessageSize());
        producer.setCompressMsgBodyOverHowmuch(producerConfig.getCompressMessageBodyThreshold());
        producer.setRetryAnotherBrokerWhenNotStoreOK(producerConfig.isRetryNextServer());

        return producer;
    }

從報錯信息發(fā)現(xiàn)可能是nameSever不匹配name-server導致,對應類中是@ConditionalOnProperty(prefix = “rocketmq”, value = “name-server”)這個注解

下面列一下@ConditionalOnProperty注解參數(shù)的意思

  • prefix application.properties配置的前綴
  • name 屬性是從application.properties配置文件中讀取屬性值

所以猜測配置文件要修改成對應的參數(shù)才行

將application中的配置改為

rocketmq.name-server=ip:9876
rocketmq.producer.group=test

改完后啟動再次報錯

Description:

An attempt was made to call the method org.apache.rocketmq.client.producer.DefaultMQProducer.<init>(Ljava/lang/String;ZLjava/lang/String;)V but it does not exist. Its class, org.apache.rocketmq.client.producer.DefaultMQProducer, is available from the following locations:

    jar:file:/D:/maven/yycg_repository/org/apache/rocketmq/rocketmq-client/4.3.2/rocketmq-client-4.3.2.jar!/org/apache/rocketmq/client/producer/DefaultMQProducer.class

It was loaded from the following location:

    file:/D:/maven/yycg_repository/org/apache/rocketmq/rocketmq-client/4.3.2/rocketmq-client-4.3.2.jar

這次的報錯是版本沖突問題,經過我無數(shù)次的實驗(流淚),最終將RocketMQ-client使用的版本是4.3.2改為4.4.0解決

<dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.4.0</version>
        </dependency>

然后啟動項目,沒有報錯,完美解決

這次這個問題費了我很多時間,記錄一下。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java.try catch finally 的執(zhí)行順序說明

    Java.try catch finally 的執(zhí)行順序說明

    這篇文章主要介紹了Java.try catch finally 的執(zhí)行順序說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java實現(xiàn)簡單文件過濾器功能

    Java實現(xiàn)簡單文件過濾器功能

    下面小編就為大家分享一篇Java實現(xiàn)簡單文件過濾器功能,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Java中DecimalFormat用法及符號含義

    Java中DecimalFormat用法及符號含義

    DecimalFormat是NumberFormat的一個具體子類,用于格式化十進制數(shù)字。這篇文章介紹了DecimalFormat的用法及符號含義,需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • Java中的對象、類、抽象類、接口、繼承之間的聯(lián)系

    Java中的對象、類、抽象類、接口、繼承之間的聯(lián)系

    這篇文章主要介紹了Java中的對象、類、抽象類、接口、繼承之間的聯(lián)系,文章講解的很清晰,有不太懂的同學可以多研究下
    2021-02-02
  • Java項目開啟遠程調試的方法步驟(tomcat、springboot)

    Java項目開啟遠程調試的方法步驟(tomcat、springboot)

    這篇文章主要介紹了Java項目開啟遠程調試的方法步驟(tomcat、springboot),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • 這一次搞懂Spring事務注解的解析方式

    這一次搞懂Spring事務注解的解析方式

    這篇文章主要介紹了這一次搞懂Spring事務注解的解析方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 淺談Java BitSet使用場景和代碼示例

    淺談Java BitSet使用場景和代碼示例

    這篇文章主要介紹了淺談Java BitSet使用場景和代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Spring框架概述和翻轉權限控制方式

    Spring框架概述和翻轉權限控制方式

    Spring是Java企業(yè)級開發(fā)的核心框架,通過IOC和AOP解耦對象依賴,統(tǒng)一生命周期管理,支持分層注解(@Service/@Repository等),覆蓋中大型項目全場景,成為標準化生態(tài)基石
    2025-08-08
  • 你知道怎么從Python角度學習Java基礎

    你知道怎么從Python角度學習Java基礎

    這篇文章主要為大家詳細介紹了Python角度學習Java基礎的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 基于sharding-jdbc的使用限制

    基于sharding-jdbc的使用限制

    這篇文章主要介紹了sharding-jdbc的使用限制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論

临沭县| 孟津县| 布拖县| 长沙县| 平原县| 开封县| 中山市| 兰西县| 南丰县| 巴楚县| 宜春市| 崇明县| 即墨市| 天镇县| 伊春市| 清水河县| 淳安县| 阜新市| 绍兴县| 碌曲县| 寿阳县| 祁连县| 扬州市| 东光县| 金平| 达尔| 轮台县| 巩留县| 滦南县| 安庆市| 尤溪县| 恩施市| 湟源县| 酉阳| 宁晋县| 抚州市| 福建省| 枣阳市| 云林县| 固始县| 镇宁|