欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

圖文并茂講解RocketMQ消息類別

 更新時(shí)間:2022年12月27日 15:35:42   作者:一個(gè)雙子座的Java攻城獅  
這篇文章主要介紹了圖文并茂講解RocketMQ消息類別,RocketMQ對(duì)于消息提供了很多用法,包括:同步消息、異步消息、單向發(fā)送、順序消息、延時(shí)消息、批量消息、過濾消息、事務(wù)消息等

1、同步消息

即時(shí)性較強(qiáng),重要的消息,且必須有回執(zhí)的消息,例如短信,通知(轉(zhuǎn)賬成功)

生產(chǎn)者:

public class Producer {
    public static void main(String[] args) throws Exception{
        DefaultMQProducer producer=new DefaultMQProducer("group1");
        producer.setNamesrvAddr("192.168.23.127:9876");
        producer.start();
        for (int i = 1; i <= 5; i++) {
            Message msg = new Message("topic2",("同步消息:hello rocketmq "+i).getBytes("UTF-8"));
            //同步消息發(fā)送
            SendResult result = producer.send(msg);
            System.out.println("返回結(jié)果:"+result);
        }
        producer.shutdown();
    }
}

消費(fèi)者:

public class Consumer {
    public static void main(String[] args) throws Exception{
        DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("group1");
        consumer.setNamesrvAddr("192.168.23.127:9876");
        consumer.subscribe("topic2","*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                for (MessageExt msg : list) {
                    //System.out.println("收到消息:"+msg);
                    System.out.println("消息:"+new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;// 成功處理, mq 收到這個(gè) 標(biāo)記后相同的消息講不會(huì)再次發(fā)給消費(fèi)者
            }
        });
        consumer.start();// 開啟多線程 監(jiān)控消息,持續(xù)運(yùn)行
        System.out.println("接收消息服務(wù)已運(yùn)行");
    }
}

測(cè)試:

2、異步消息

即時(shí)性較弱,但需要有回執(zhí)的消息,例如訂單中的某些信息

生產(chǎn)者:

public class Producer {
    public static void main(String[] args) throws Exception{
        DefaultMQProducer producer=new DefaultMQProducer("group1");
        producer.setNamesrvAddr("192.168.23.127:9876");
        producer.start();
        for (int i = 1; i <= 5; i++) {
            //異步消息發(fā)送
            Message msg = new Message("topic2",("異步消息:hello rocketmq "+i).getBytes("UTF-8"));
            producer.send(msg, new SendCallback() {
                //表示成功返回結(jié)果
                @Override
                public void onSuccess(SendResult sendResult) {
                    System.out.println(sendResult);
                }
                //表示發(fā)送消息失敗
                @Override
                public void onException(Throwable throwable) {
                    System.out.println(throwable);
                }
            });
        }
        //添加一個(gè)休眠操作,確保異步消息返回后能夠輸出
        TimeUnit.SECONDS.sleep(10);
        producer.shutdown();
    }
}

消費(fèi)者:

public class Consumer {
    public static void main(String[] args) throws Exception{
        DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("group1");
        consumer.setNamesrvAddr("192.168.23.127:9876");
        consumer.subscribe("topic2","*");
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                for (MessageExt msg : list) {
                    //System.out.println("收到消息:"+msg);
                    System.out.println("消息:"+new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;// 成功處理, mq 收到這個(gè) 標(biāo)記后相同的消息講不會(huì)再次發(fā)給消費(fèi)者
            }
        });
        consumer.start();// 開啟多線程 監(jiān)控消息,持續(xù)運(yùn)行
        System.out.println("接收消息服務(wù)已運(yùn)行");
    }
}

測(cè)試:

3、單向消息

不需要有回執(zhí)的消息,例如日志類消息

生產(chǎn)者:

public class Producer {
    public static void main(String[] args) throws Exception{
        DefaultMQProducer producer=new DefaultMQProducer("group1");
        producer.setNamesrvAddr("192.168.23.127:9876");
        producer.start();
        for (int i = 1; i <= 5; i++) {
            //單向消息
            Message msg = new Message("topic2",("單向消息:hello rocketmq "+i).getBytes("UTF-8"));
            producer.sendOneway(msg);
        }
        //添加一個(gè)休眠操作,確保異步消息返回后能夠輸出
        TimeUnit.SECONDS.sleep(10);
        producer.shutdown();
    }
}

消費(fèi)者代碼同上

測(cè)試:

總結(jié) 同步消息

SendResult result = producer.send(msg);

異步消息(回調(diào)處理結(jié)果必須在生產(chǎn)者進(jìn)程結(jié)束前執(zhí)行,否則回調(diào)無法正確執(zhí)行)

		producer.send(msg, new SendCallback() {
                //表示成功返回結(jié)果
                @Override
                public void onSuccess(SendResult sendResult) {
                    System.out.println(sendResult);
                }
                //表示發(fā)送消息失敗
                @Override
                public void onException(Throwable throwable) {
                    System.out.println(throwable);
                }
            });

單向消息

producer.sendOneway(msg);

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

相關(guān)文章

  • Java語言實(shí)現(xiàn)掃雷游戲(1)

    Java語言實(shí)現(xiàn)掃雷游戲(1)

    這篇文章主要為大家詳細(xì)介紹了Java語言實(shí)現(xiàn)的掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • springboot集成dubbo注解版的示例代碼

    springboot集成dubbo注解版的示例代碼

    這篇文章主要介紹了springboot集成dubbo注解版的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • SpringBoot+Email發(fā)送郵件的實(shí)現(xiàn)示例

    SpringBoot+Email發(fā)送郵件的實(shí)現(xiàn)示例

    Spring?Boot提供了簡(jiǎn)單而強(qiáng)大的郵件發(fā)送功能,本文主要介紹了SpringBoot+Email發(fā)送郵件的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java實(shí)現(xiàn)順序表的操作

    Java實(shí)現(xiàn)順序表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)順序表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • javax.mail.SendFailedException: Sending failed問題原因

    javax.mail.SendFailedException: Sending failed問題原因

    這篇文章主要介紹了javax.mail.SendFailedException: Sending failed問題原因,需要的朋友可以參考下
    2015-05-05
  • IntelliJ?IDEA?2023.2最新版激活方法及驗(yàn)證ja-netfilter配置是否成功

    IntelliJ?IDEA?2023.2最新版激活方法及驗(yàn)證ja-netfilter配置是否成功

    隨著2023.2版本的發(fā)布,用戶們渴望了解如何激活這個(gè)最新版的IDE,本文將介紹三種可行的激活方案,包括許可證服務(wù)器、許可證代碼和idea?vmoptions配置,幫助讀者成功激活并充分利用IDEA的功能,感興趣的朋友參考下吧
    2023-08-08
  • springboot中RestTemplate發(fā)送HTTP請(qǐng)求的實(shí)現(xiàn)示例

    springboot中RestTemplate發(fā)送HTTP請(qǐng)求的實(shí)現(xiàn)示例

    RestTemplate是一個(gè) spring-web 提供的執(zhí)行HTTP請(qǐng)求的同步阻塞式工具類,本文就來介紹一下RestTemplate發(fā)送HTTP請(qǐng)求,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java編程中正則表達(dá)式的用法總結(jié)

    Java編程中正則表達(dá)式的用法總結(jié)

    這篇文章主要介紹了Java編程中正則表達(dá)式的用法總結(jié),正則表達(dá)式是一種強(qiáng)大的字符串處理工具,Java對(duì)正則表達(dá)式的支持還是很不錯(cuò)的,我們先來整理一下正則表達(dá)式的一些基礎(chǔ)知識(shí):
    2016-05-05
  • IDEA安裝部署Alibaba Cloud Toolkit的實(shí)現(xiàn)步驟

    IDEA安裝部署Alibaba Cloud Toolkit的實(shí)現(xiàn)步驟

    Alibaba Cloud Toolkit是阿里云針對(duì)IDE平臺(tái)為開發(fā)者提供的一款插件,本文主要介紹了IDEA安裝部署Alibaba Cloud Toolkit的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • Java中的HttpServletRequestWrapper用法解析

    Java中的HttpServletRequestWrapper用法解析

    這篇文章主要介紹了Java中的HttpServletRequestWrapper用法解析,HttpServletRequest 對(duì)參數(shù)值的獲取實(shí)際調(diào)的是org.apache.catalina.connector.Request,沒有提供對(duì)應(yīng)的set方法修改屬性,所以不能對(duì)前端傳來的參數(shù)進(jìn)行修改,需要的朋友可以參考下
    2024-01-01

最新評(píng)論