日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

消息存活時(shí)間

更新時(shí)間:

本文介紹云消息隊(duì)列 RabbitMQ 版消息存活時(shí)間的核心概念、應(yīng)用場景、注意事項(xiàng)和設(shè)置方式。

什么是消息存活時(shí)間

云消息隊(duì)列 RabbitMQ 版中,消息存活時(shí)間用于限制消息在Queue中可以存在的時(shí)間,如果消息在Queue中存在的時(shí)間超過了設(shè)置的消息存活時(shí)間,消息將會被進(jìn)行如下處理:

  • 若您未給Queue設(shè)置死信Exchange,消息將被Queue直接丟棄。

  • 若您為Queue設(shè)置了死信Exchange,則消息被丟棄后會被轉(zhuǎn)發(fā)到死信Exchange,由死信Exchange將其路由到目標(biāo)Queue。您可以在目標(biāo)Queue獲取該消息。更多信息,請參見死信Exchange

應(yīng)用場景

消息存活時(shí)間可用于保障消息流通性。例如,某應(yīng)用的消息在某些特定時(shí)間會劇烈增加,如果您的業(yè)務(wù)可以接受消息丟失,您可以通過設(shè)置消息存活時(shí)間丟棄堆積的消息,從而保障消息流通性。

消息存活時(shí)間設(shè)置規(guī)則

  • 云消息隊(duì)列 RabbitMQ 版支持通過x-message-ttlexpiration設(shè)置消息存活時(shí)間,不支持通過rabbitmqctl工具的policy進(jìn)行設(shè)置。

  • 云消息隊(duì)列 RabbitMQ 版支持在創(chuàng)建Queue時(shí)為Queue設(shè)置消息存活時(shí)間,同時(shí)支持在消息發(fā)送時(shí)為消息設(shè)置存活時(shí)間。

    如果兩個(gè)同時(shí)設(shè)置,則取最小的時(shí)間作為消息的存活時(shí)間。

  • 延時(shí)消息的實(shí)際存活時(shí)間=min{消息級存活時(shí)間, Queue級別存活時(shí)間}+延時(shí)時(shí)間。延時(shí)消息的具體信息,請參見延時(shí)消息

  • 消息存活時(shí)間的取值上限和實(shí)例的定時(shí)時(shí)長一致;且取值必須為非負(fù)整型數(shù),單位為毫秒。

  • 如果消息存活時(shí)間被設(shè)置為0,則消息到達(dá)Queue時(shí),除非立即被消費(fèi)者消費(fèi),否則會被立即丟棄或轉(zhuǎn)發(fā)到死信Exchange。

設(shè)置方式

云消息隊(duì)列 RabbitMQ 版支持您通過以下方式設(shè)置消息存活時(shí)間:

  • 云消息隊(duì)列 RabbitMQ 版控制臺

    您可以通過云消息隊(duì)列 RabbitMQ 版控制臺為指定Queue設(shè)置消息存活時(shí)間。具體操作,請參見Queue管理

  • OpenAPI Explorer

    您可以通過OpenAPI Explorer調(diào)用CreateQueue接口,為指定Queue設(shè)置消息存活時(shí)間。更多信息,請參見CreateQueue

  • 開源RabbitMQ SDK

    您可以通過開源RabbitMQ SDK為指定Queue或某條消息設(shè)置消息存活時(shí)間。更多信息,請參見SDK列表。示例代碼如下:

    • 通過x-message-ttl設(shè)置隊(duì)列級別的消息存活時(shí)間

      Map<String, Object> props = new HashMap<String, Object>();
      props.put("x-message-ttl", 1000);
      channel.queueDeclare("myqueue", false, false, false, props);
    • 通過expiration設(shè)置消息級別的消息存活時(shí)間

      byte[] messageBodyBytes = "test".getBytes();
      AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder()
              .expiration("1000")
              .build();
      channel.basicPublish("myqueue", peoperties, messageBodyBytes);