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

RocketMQ的四種常用消息隊列及代碼演示

 更新時間:2024年01月13日 10:33:43   作者:小湯湯湯湯  
這篇文章主要介紹了RocketMQ的四種常用消息隊列及代碼演示,普通消息隊列是最基本的一種消息隊列,可以按照先進先出(FIFO)的順序存儲消息,并且可以被多個消費者同時消費,可以通過在生產(chǎn)者端指定主題名稱和標簽來創(chuàng)建普通消息隊列,需要的朋友可以參考下

消息隊列

普通消息隊列

普通消息隊列是最基本的一種消息隊列,可以按照先進先出(FIFO)的順序存儲消息,并且可以被多個消費者同時消費??梢酝ㄟ^在生產(chǎn)者端指定主題名稱和標簽來創(chuàng)建普通消息隊列。

順序消息隊列

順序消息隊列可以保證相同主題和相同消息鍵的消息按照嚴格的順序被消費,例如可以用于訂單等需要保證處理順序的場景??梢酝ㄟ^在創(chuàng)建普通消息隊列時指定MessageQueueSelector對象和鍵來創(chuàng)建順序消息隊列。

延遲消息隊列

延遲消息隊列是一種可以在指定時間后被消費的消息隊列??梢栽谏a(chǎn)者端指定消息發(fā)送的時間戳和延遲時間,RocketMQ會根據(jù)這些信息將消息存儲到延遲消息隊列中,并在指定的時間后投遞消息到普通消息隊列中。

事務消息隊列

事務消息隊列是一種可以保證消息投遞的事務性消息隊列。在生產(chǎn)者端發(fā)送事務消息時,會先向RocketMQ發(fā)送一條預提交消息,然后在本地事務執(zhí)行成功后再提交或回滾事務。如果提交事務,則RocketMQ會將消息投遞到消費者,否則將不會投遞該消息??梢酝ㄟ^在創(chuàng)建事務消息隊列時指定本地事務執(zhí)行器來創(chuàng)建事務消息隊列。

除此之外,RocketMQ還支持多主題(Topic)、多消息生產(chǎn)者(Producer)和多消費者組(Consumer Group)的概念,可以為不同的業(yè)務場景創(chuàng)建不同的消息隊列。

代碼演示

普通消息隊列

@Service
public class MyProducer {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    public void sendMessage(String message) {
        rocketMQTemplate.convertAndSend("myTopic", message);
    }
}

順序消息隊列

@Service
public class MyProducer {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    public void sendOrderMessage(String message, int orderId) {
        rocketMQTemplate.setMessageQueueSelector(new OrderMessageQueueSelector());
        rocketMQTemplate.convertAndSend("myTopic", message, orderId);
    }
}
class OrderMessageQueueSelector implements MessageQueueSelector {
    @Override
    public MessageQueue select(List<MessageQueue> mqs, Message message, Object orderId) {
        int index = (int) orderId % mqs.size();
        return mqs.get(index);
    }
}

延遲消息隊列

@Service
public class MyProducer {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    public void sendDelayMessage(String message, long delayTime) {
        rocketMQTemplate.syncSend("myTopic", MessageBuilder.withPayload(message)
                .build(), 3000, 2, delayTime);
    }
}

事務消息隊列

@Service
public class MyTransactionListener implements RocketMQLocalTransactionListener {
    @Override
    public RocketMQLocalTransactionState executeLocalTransaction(Message message, Object o) {
        // 執(zhí)行本地事務
        // 如果本地事務執(zhí)行成功,則返回RocketMQLocalTransactionState.COMMIT
        // 如果本地事務執(zhí)行失敗,則返回RocketMQLocalTransactionState.ROLLBACK
        return RocketMQLocalTransactionState.UNKNOWN;
    }
    @Override
    public RocketMQLocalTransactionState checkLocalTransaction(Message message) {
        // 檢查本地事務狀態(tài)
        // 如果本地事務執(zhí)行成功,則返回RocketMQLocalTransactionState.COMMIT
        // 如果本地事務執(zhí)行失敗,則返回RocketMQLocalTransactionState.ROLLBACK
        // 如果本地事務狀態(tài)未知,則返回RocketMQLocalTransactionState.UNKNOWN
        return RocketMQLocalTransactionState.UNKNOWN;
    }
}
@Service
public class MyProducer {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    @Autowired
    private MyTransactionListener transactionListener;
    public void sendTransactionMessage(String message) {
        rocketMQTemplate.setTransactionListener(transactionListener);
        rocketMQTemplate.sendMessageInTransaction("myTransactionGroup", "myTopic",
                MessageBuilder.withpayload(message).build(), null);
}
}

到此這篇關于RocketMQ的四種常用消息隊列及代碼演示的文章就介紹到這了,更多相關RocketMQ常用消息隊列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringCloud+nacos部署在多ip環(huán)境下統(tǒng)一nacos服務注冊ip(親測有效)

    SpringCloud+nacos部署在多ip環(huán)境下統(tǒng)一nacos服務注冊ip(親測有效)

    在部署SpringCoud項目的時候分服務器部署注冊同一個nacos服務,但是在服務器有多個ip存在的同時(內(nèi)外網(wǎng)),就會出現(xiàn)注冊服務ip不同的問題,導致一些接口無法連接訪問,經(jīng)過多次排查終于找到問題并找到解決方法,需要的朋友可以參考下
    2023-04-04
  • 深入理解Java顯式鎖的相關知識

    深入理解Java顯式鎖的相關知識

    今天帶大家學習的是關于Java的相關知識,文章圍繞著Java顯式鎖展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java重寫equals及hashcode方法流程解析

    Java重寫equals及hashcode方法流程解析

    這篇文章主要介紹了Java重寫equals及hashcode方法流程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Mybatis-plus插入后返回元素id的問題

    Mybatis-plus插入后返回元素id的問題

    這篇文章主要介紹了Mybatis-plus插入后返回元素id的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • springboot發(fā)送郵件功能的實現(xiàn)代碼

    springboot發(fā)送郵件功能的實現(xiàn)代碼

    發(fā)郵件是一個很常見的功能,在java中實現(xiàn)需要依靠JavaMailSender這個接口,今天通過本文給大家分享springboot發(fā)送郵件功能的實現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Apache?Commons?BeanUtils:?JavaBean操作方法

    Apache?Commons?BeanUtils:?JavaBean操作方法

    這篇文章主要介紹了Apache?Commons?BeanUtils:?JavaBean操作的藝術,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • idea項目debug模式啟動,斷點失效,斷點紅點內(nèi)無對勾問題及解決

    idea項目debug模式啟動,斷點失效,斷點紅點內(nèi)無對勾問題及解決

    這篇文章主要介紹了idea項目debug模式啟動,斷點失效,斷點紅點內(nèi)無對勾問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 幾道常問Redis面試題,你能答對嗎?

    幾道常問Redis面試題,你能答對嗎?

    在程序員面試過程中redis相關的知識是常被問到的話題。這篇文章主要介紹了13道Redis面試題,整理一下分享給大家,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot解決循環(huán)調(diào)用問題

    SpringBoot解決循環(huán)調(diào)用問題

    作者在將SpringBoot從1.5版本升級至2.6版本,并遷移至阿里云上運行后,遇到了循環(huán)調(diào)用問題,在Jetty容器中運行沒問題,但在Tomcat容器中就出現(xiàn)了循環(huán)引用問題,原因是SpringBoot 2.6不鼓勵循環(huán)引用,暴露出該問題,作者提供了兩種解決思路
    2024-10-10
  • 淺談解決Hibernate懶加載的4種方式

    淺談解決Hibernate懶加載的4種方式

    這篇文章主要介紹了淺談解決Hibernate懶加載的4種方式,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12

最新評論

河东区| 林西县| 保定市| 安化县| 厦门市| 措勤县| 嘉义市| 凯里市| 云梦县| 郓城县| 林州市| 福海县| 南康市| 正宁县| 宁安市| 云南省| 绥滨县| 沅江市| 宝坻区| 北票市| 花垣县| 承德县| 博野县| 平顺县| 巢湖市| 通许县| 崇阳县| 郑州市| 恩施市| 青阳县| 柳江县| 新田县| 尼玛县| 布尔津县| 兴安县| 恩施市| 桃源县| 屏南县| 明溪县| 互助| 康乐县|