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

SDK使用注意事項

更新時間:

本文介紹使用開源的客戶端SDK接入云消息隊列 RabbitMQ 版服務端時的注意事項。

使用客戶端時需要設置自動重連功能嗎?

設置com.rabbitmq.client.ConnectionFactory接口時,必須開啟連接自動恢復功能,保證服務端升級時,客戶端斷開連接可自動重新連接,否則會導致消息讀寫中斷。

//設置為true,開啟Connection自動恢復功能;設置為false,關閉Connection自動恢復功能。
factory.setAutomaticRecoveryEnabled(true);
//設置自動恢復間隔時間,單位:毫秒。
factory.setNetworkRecoveryInterval(5000);

生產消息時需要注意什么?

  • 在生產或消費過程中,請勿頻繁開啟或關閉連接。請盡可能使用長期存活的Connection,以免每次收發消息時都需要創建新的Connection,消耗大量的網絡資源和服務端資源,甚至引起服務端SYN Flood防護。更多信息,請參見Connection

  • 生產消息前根據實際情況選擇是否打開發送確認接口。開啟發送確認,服務端收到消息后,會調用本地方法確認消息收到。

  • mandatory設置為true時,如果消息因為路由原因,未到達Queue,客戶端添加的ReturnListener接口將會被調用。

  • 發送消息時,強烈建議自定義msgId,即消息的唯一標識。可用于消息查詢、軌跡查詢、以及故障排查時后臺信息定位。

  • 消息發送時,需要根據basicPublish接口返回的錯誤類型決定是否拋出異常。

    • 如果是業務自身問題,例如ExchangeNotExist(Exchange不存在)則需要拋出異常。

    • 如果是發送消息被限流,建議關閉舊的連接,重新創建并初始化Channel,這樣可以保證業務的連續性。

消費消息時需要注意什么?

  • 消費數據時,需要防止消費傾斜。具體做法,請參見Connection和Channel的使用建議

  • 消費數據時,使用basic.basicQos設置服務端允許緩存未ack消息的數量,當到達設置值時,服務端將不再推送消息到客戶端。當客戶端提交ack后,服務端將再次推送等同ack數量的消息,保持服務端緩存最大未ack消息數量小于等于QoS設置值。QoS可以設置在Channel上,也可以設置在單個Consumer上。channel.basicQos(100, true)表示同一Channel上創建的所有Consumer共享100的額度限制。channel.basicQos(100, false)或者channel.basicQos(100)表示不同Consumer之間額度不共享,不同Consumer額度都是100。如果客戶端不設置,默認使用服務端配置,服務端默認針對每個消費者限制100,也即等同于客戶端channel.basicQos(100, false)。自定義設置值不能超過100,否則設置不生效,仍然使用默認值。如果消費能力較弱,建議將QoS值降低。如果服務端堆積消息量達到設置的QoS,則不會再推送消息給客戶端。這種情況下客戶端看到的現象是服務端間歇性推送消息,并且重啟消費者后消息恢復,建議通過增強消費者的消費能力解決。如果使用autoACK消費模式,basicQos將不生效。

  • 消費者提交的ack如果不在指定時間內,則觸發消費重試。消息將會被重新投遞,最多重試16次。若重試16次還未成功,則消息將被丟棄或發送至死信Exchange。消費超時時間如下:

    實例重試策略參數說明

    實例類型

    Serverless系列實例

    預付費系列實例

    預留+彈性 /按累積量

    專業版

    企業版

    鉑金版

    消費超時時間

    15分鐘

    默認值:5分鐘

    10分鐘

    默認值:1分鐘

    15分鐘

    默認值:5分鐘

    60分鐘

    默認值:30分鐘

    最大投遞次數

    16

    默認值:16

    16

    默認值:16

    16

    默認值:16

    64

    默認值:16

  • basicGet拉取消息效率較低,能達到的上限TPS沒有basicConsume高。生產環境大規模消費消息推薦使用basicConsume,而不是basicGet

  • queueDeclareexchangeDeclare等元數據接口有限流設置,建議在控制臺上創建,不建議在發送數據時調用,否則可能觸發限流導致連接關閉。更多信息,請參見使用限制