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

Springboot?整合?RocketMQ?收發(fā)消息的配置過程

 更新時(shí)間:2021年12月29日 11:53:14   作者:liqiangbk  
這篇文章主要介紹了Springboot?整合?RocketMQ?收發(fā)消息,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Springboot 整合 RocketMQ 收發(fā)消息

創(chuàng)建springboot項(xiàng)目

pom.xml添加rocketmq-spring-boot-starter依賴。

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

yml 配置

application.yml

rocketmq:
  name-server: 192.168.64.141:9876

application-demo1.yml

使用 demo1 profile 指定生產(chǎn)者組組名

rocketmq:
  producer:
    group: producer-demo1

application-demo2.yml

使用 demo2 profile 指定生產(chǎn)者組組名

rocketmq:
  producer:
    group: producer-demo2

測(cè)試

demo 1

  • 發(fā)送普通消息
  • 發(fā)送 Spring 的通用 Message 對(duì)象
  • 發(fā)送異步消息
  • 發(fā)送順序消息

生產(chǎn)者

package cn.tedu.demo2.m1;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
@Component
public class Producer {
    @Autowired
    private RocketMQTemplate t ;
    public  void send(){
        //發(fā)送同步消息
        t.convertAndSend("Topic1:TagA", "Hello world! ");
        //發(fā)送spring的Message
        Message<String> message = MessageBuilder.withPayload("Hello Spring message! ").build();
        t.send("Topic1:TagA",message);
        //發(fā)送異步消息
        t.asyncSend("Topic1:TagA", "hello world asyn", new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("發(fā)送成功");
            }
            @Override
            public void onException(Throwable throwable) {
                System.out.println("發(fā)送失敗");
            }
        });
        //發(fā)送順序消息
        t.syncSendOrderly("Topic1", "98456237,創(chuàng)建", "98456237");
        t.syncSendOrderly("Topic1", "98456237,支付", "98456237");
        t.syncSendOrderly("Topic1", "98456237,完成", "98456237");
    }
}

消費(fèi)者

package cn.tedu.demo2.m1;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
@Component
@RocketMQMessageListener(topic = "Topic1",consumerGroup = "consumer-demo1")
public class Consumer  implements RocketMQListener<String> {
    @Override
    public void onMessage(String s) {
        System.out.println("收到"+s);
    }
}

主類

package cn.tedu.demo2.m1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

測(cè)試類

需要放在 test 文件夾

激活 demo1 profile @ActiveProfiles("demo1")

package cn.tedu.demo2.m1;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
@SpringBootTest
@ActiveProfiles("demo1")
public class Test1 {
    @Autowired
    private  Producer producer;
    @Test
    public void test1(){
        producer.send();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

demo 2

發(fā)送事務(wù)消息

生產(chǎn)者

package cn.tedu.demo2.m2;

import org.apache.rocketmq.spring.annotation.RocketMQTransactionListener;
import org.apache.rocketmq.spring.core.RocketMQLocalTransactionListener;
import org.apache.rocketmq.spring.core.RocketMQLocalTransactionState;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;

@Component

public class Producer {

    @Autowired
    private RocketMQTemplate t;

    public void send(){
        Message<String> message = MessageBuilder.withPayload("Hello world").build();
        //一旦發(fā)送消息,則執(zhí)行監(jiān)聽器
        t.sendMessageInTransaction("Topic2",message,null);
    }
    @RocketMQTransactionListener
    class Lis implements RocketMQLocalTransactionListener {
        @Override
        public RocketMQLocalTransactionState executeLocalTransaction(Message message, Object o) {
            System.out.println("執(zhí)行本地事務(wù)");
            return RocketMQLocalTransactionState.UNKNOWN;
        }

        @Override
        public RocketMQLocalTransactionState checkLocalTransaction(Message message) {
            System.out.println("執(zhí)行事務(wù)回查");
            return RocketMQLocalTransactionState.COMMIT;
        }
    }

}

消費(fèi)者

package cn.tedu.demo2.m2;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
@Component
@RocketMQMessageListener(topic = "Topic2",consumerGroup = "consumer-demo2")
public class Consumer implements RocketMQListener<String> {
    @Override
    public void onMessage(String s) {
        System.out.println("收到"+s);
    }
}

主類

package cn.tedu.demo2.m2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

測(cè)試類

package cn.tedu.demo2.m2;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
@SpringBootTest
@ActiveProfiles("demo2")
public class Test2 {
    @Autowired
    private  Producer producer;
    @Test
    public void  test1(){
        producer.send();
        //為了能夠收到消費(fèi)者消費(fèi)的數(shù)據(jù),這里通過休眠模擬等待時(shí)間
        try {
            Thread.sleep(30000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

到此這篇關(guān)于Springboot 整合 RocketMQ 收發(fā)消息的文章就介紹到這了,更多相關(guān)Springboot 整合 RocketMQ 收發(fā)消息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談StringBuilder類的capacity()方法和length()方法的一些小坑

    淺談StringBuilder類的capacity()方法和length()方法的一些小坑

    這篇文章主要介紹了StringBuilder類的capacity()方法和length()方法的一些小坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java中遍歷Map集合的5種方式總結(jié)

    Java中遍歷Map集合的5種方式總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java中遍歷Map集合的5種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Redis 集成Spring的示例代碼(spring-data-redis)

    Redis 集成Spring的示例代碼(spring-data-redis)

    本篇文章主要介紹了Redis 集成Spring的示例代碼(spring-data-redis) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • maven多模塊依賴版本不一致問題解決

    maven多模塊依賴版本不一致問題解決

    本文主要介紹了maven多模塊依賴版本不一致問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • IntelliJ IDEA 的使用界面圖文教程

    IntelliJ IDEA 的使用界面圖文教程

    這篇文章主要介紹了IntelliJ IDEA 的使用界面圖文教程,需要的朋友可以參考下
    2018-10-10
  • Jmeter安裝及配置教程詳解

    Jmeter安裝及配置教程詳解

    很多朋友私信小編Jmeter安裝及配置教程能出一期教程嗎?正巧趕上疫情,不是太忙,下面小編把Jmeter安裝及配置教程分享到腳本之家平臺(tái),感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • shrio中hashedCredentialsMatcher密碼匹配示例詳解

    shrio中hashedCredentialsMatcher密碼匹配示例詳解

    shrio是一個(gè)輕量級(jí)權(quán)限管理框架,密碼的匹配由框架內(nèi)部完成。密碼是否匹配由接口CredentialsMatcher定義實(shí)現(xiàn)類完成,CredentialsMatcher實(shí)現(xiàn)類有SimpleCredentialsMatcher和HashedCredentialsMatcher兩個(gè)
    2021-10-10
  • 一文帶你搞懂Redis分布式鎖

    一文帶你搞懂Redis分布式鎖

    本篇文章主要來(lái)介紹一下如何Redis實(shí)現(xiàn)分布式鎖的演進(jìn)過程,以及為什么不能直接用Setnx實(shí)現(xiàn)分布式鎖,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-09-09
  • Java使用JDBC連接Oracle_MSSQL實(shí)例代碼

    Java使用JDBC連接Oracle_MSSQL實(shí)例代碼

    這篇文章主要介紹了Java使用JDBC連接Oracle_MSSQL實(shí)例代碼,需要的朋友可以參考下
    2014-01-01
  • Java創(chuàng)建數(shù)組的3種方式代碼舉例

    Java創(chuàng)建數(shù)組的3種方式代碼舉例

    數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)組描述的是若干個(gè)相同類型的數(shù)據(jù)按照一定的先后次序排列組合而成,其中每一個(gè)數(shù)據(jù)稱為數(shù)組的元素,可以通過下標(biāo)進(jìn)行訪問,這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建數(shù)組的3種方式,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

邹城市| 扎囊县| 武夷山市| 辰溪县| 益阳市| 诏安县| 榆树市| 宁乡县| 白城市| 吴忠市| 武夷山市| 疏附县| 曲阜市| 德州市| 永德县| 离岛区| 长兴县| 鄂州市| 乐昌市| 绍兴市| 嫩江县| 芜湖市| 石楼县| 青浦区| 张北县| 新巴尔虎左旗| 凭祥市| 河源市| 西乌| 巨野县| 富阳市| 青川县| 漯河市| 东台市| 桑植县| 囊谦县| 秦皇岛市| 陇西县| 秭归县| 汉沽区| 绥中县|