訂單到期關閉

文章目錄

  • 前言
  • 一、場景?
  • 二、使用步驟
    • 1.項目配置好rocketmq
    • 2.讀入數據
  • 其他方式處理訂單到期關閉
    • 定時任務


前言

實習期間在做訂單模塊。遇到過訂單到時關閉的場景。
因為我們在通過回調接收第三方訂單狀態的時候,使用了rocketmq,在遇到訂單超時關閉的場景的時候,為了不引入額外的依賴,我們就繼續使用rocketmq的延遲隊列來做實現。

同時記錄幾種剛了解到的訂單到期關閉實現方式。


一、場景?

酒店模塊中,比如用戶下單酒店了。
我們要設置超過多少分鐘,就將訂單自動取消了。

二、使用步驟

1.項目配置好rocketmq

2.讀入數據

創建一個生產者

public class DelayProduce {@Autowiredprivate RocketMQTemplate rocketMQTemplate;/*** @param topic 主題* @param message 消息內容* @param delayLevel 分為18個等級,分別對應:1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h*/public void sendDelayMessage(String topic, String message, int delayLevel) {SendResult sendResult = rocketMQTemplate.syncSend(topic, MessageBuilder.withPayload(message).build(), 10000L, delayLevel);log.info("sendtime is {}", DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss").format(LocalDateTime.now()));log.info("sendResult is{}", sendResult);}public void sendCommonMessage(String topic, String message) {SendResult sendResult = rocketMQTemplate.syncSend(topic, MessageBuilder.withPayload(message).build(), 10000L);log.info("sendtime is {}", DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss").format(LocalDateTime.now()));log.info("sendResult is{}", sendResult);}
}

創建好訂單之后,將訂單發送到延遲隊列

public class orderCreator {public void create( ... ) {...delayProduce.sendDelayMessage(CERTAIN_TOPIC,JSON.toJSONString(order),15 // 15代表rocketmq中第15級的延時時長,20分鐘);...}
}

延時隊列的消費者,來處理到時間的訂單消息

@RocketMQMessageListener(topic = TOPIC,consumerGroup = CONSUMERGROUP
)
public class OrderDelayConsumer implements RocketMQListener<String> {@Overridepublic void onMessage(String message) {檢測訂單是否已經支付成功,如果支付過了,就不管了如果仍然沒有支付,就取消訂單,對訂單進行關閉if (取消成功) {創建message,發送給狀態機,轉換訂單狀態為已取消}}
}

其他方式處理訂單到期關閉

定時任務

通過定時任務,去定期掃描到期的訂單,做關單操作。比如使用xxl-job。
這樣的處理方式的優點是:

  1. 簡單 實現容易

缺點也顯而易見:

  1. 關單時機不精確,

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43183.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43183.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43183.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

叁[3],使用Newtonsoft.Json.dll,異常記錄

開發環境 VS2022/.net6.0/WPF 1&#xff0c;異常1,反序列化數組異常。 convertError:"[{"不拉不拉***************************** 原因&#xff1a;檢查是Json字符串的數組格式異常。 正常數組字符串 "result":[{"key1":"value1"…

神經網絡構成、優化、常用函數+激活函數

Iris分類 數據集介紹&#xff0c;共有數據150組&#xff0c;每組包括長寬等4個輸入特征&#xff0c;同時給出輸入特征對應的Iris類別&#xff0c;分別用0&#xff0c;1&#xff0c;2表示。 從sklearn包datasets讀入數據集。 from sklearn import darasets from pandas impor…

vulnhub-NOOB-1

確認靶機 掃描靶機發現ftp Anonymous 的A大小寫都可以 查看文件 解密 登錄網頁 點擊about us會下載一個壓縮包 使用工具提取 steghide info 目標文件 //查看隱藏信息 steghide extract -sf 目標文件 //提取隱藏的文件 steghide embed -cf 隱藏信息的文件 -ef…

什么樣的開放式耳機好用舒服?南卡、倍思、Oladance高人氣質量絕佳產品力薦!

?開放式耳機在如今社會中已經迅速成為大家購買耳機的新趨勢&#xff0c;深受喜歡聽歌和熱愛運動的人群歡迎。當大家談到佩戴的穩固性時&#xff0c;開放式耳機都會收到一致好評。對于熱愛運動的人士而言&#xff0c;高品質的開放式耳機無疑是理想之選。特別是在近年來的一些騎…

算法學習記錄4

L2-012 關于堆的判斷 def checkHeap(heap, target):if target 0:return heapif heap[target] < heap[(target - 1) // 2]:temp heap[target]heap[target] heap[(target - 1) // 2]heap[(target - 1) // 2] tempheap checkHeap(heap, (target - 1) // 2)return heapdef…

2024.7.7刷題記錄

目錄 一、849. Dijkstra求最短路 I - AcWing題庫 二、850. Dijkstra求最短路 II - AcWing題庫 根據講解視頻寫的代碼 一、849. Dijkstra求最短路 I - AcWing題庫 N 600 MAXL 10010 # 最長邊長 # 稠密圖鄰接矩陣 g [[MAXL] * N for _ in range(N)] dist [MAXL] * N …

圖片kb太大了怎么改小?修改圖片kb的方法介紹

圖片kb太大了怎么改小&#xff1f;將圖片的文件大小&#xff08;以KB為單位&#xff09;縮小可以帶來多種優點&#xff0c;但也有一些缺點需要注意。縮小圖片文件大小可以顯著減少它在硬盤或其他存儲設備上占用的空間&#xff0c;使你能夠存儲更多的圖片和其他文件。而且&#…

KIVY 3D Rotating Monkey Head?

7 Python Kivy Projects (With Full Tutorials) – Pythonista Planet KIVY 3D Rotating Monkey Head kivy 3D 旋轉猴子頭How to display rotating monkey example in a given layout. Issue #6688 kivy/kivy GitHub 3d 模型下載鏈接 P99 - Download Free 3D model by …

【Qt】QItemSelectionModel 添加選中行

1. 介紹 QItemSelectionModel 中沒有直接添加選中行的方法&#xff0c;可以通過下面的方式添加。 2. 代碼 //定義 QSqlTableModel* m_tableModel; QItemSelectionModel* m_selectionModel;//添加選中行, 全選 void addAllLine() {for(int i0; i<m_tableModel->rowCoun…

【AI大模型新型智算中心技術體系深度分析 2024】

文末有福利&#xff01; ChatGPT 系 列 大 模 型 的 發 布&#xff0c; 不 僅 引 爆 全 球 科 技 圈&#xff0c; 更 加 夯 實 了 人 工 智 能&#xff08;Artificial Intelligence, AI&#xff09;在未來改變人類生產生活方式、引發社會文明和競爭力代際躍遷的戰略性地位。當…

mysql select count返回null

注意 mysql select count返回null 下面是百度的回答 在MySQL中&#xff0c;當SELECT COUNT(*)查詢返回NULL時&#xff0c;通常意味著查詢結果為空集&#xff0c;即沒有記錄匹配查詢條件。COUNT()函數在沒有匹配行的情況下返回NULL&#xff0c;而不是0。 解決方法&#xff1a…

ImportError: xxx: cannot open shared object file: No such file or directory

一類常見錯誤&#xff1a;編譯器器無法在目錄下找到共享目標文件&#xff0c; Linux(ubuntu)中共享的庫目錄為/usr/lib/x86_64-linux-gnu&#xff0c;gcc的編譯庫 在該目錄下創建共享文件&#xff08;偽造、下載&#x1f91c;cp)即可 sudo ln -s libtiff.so.6 libtiff.so.5

昇思25天學習打卡營第11天|ResNet50圖像分類

文章目錄 昇思MindSpore應用實踐基于MindSpore的ResNet50圖像分類1、ResNet50 簡介2、數據集預處理及可視化3、構建網絡構建 Building Block構建 Bottleneck Block構建 ResNet50 網絡 4、模型訓練5、圖像分類模型推理 Reference 昇思MindSpore應用實踐 本系列文章主要用于記錄…

Emacs相關

Emacs 詳細介紹 Emacs&#xff0c;全稱 Editor MACroS&#xff0c;是一款功能強大、歷史悠久的文本編輯器。它最早由 Richard Stallman 于 1976 年開發&#xff0c;是自由軟件運動的重要組成部分。Emacs 的設計理念強調可定制性和擴展性&#xff0c;使得它不僅僅是一個編輯器&…

AsyncRequestTimeoutException

在Spring MVC中&#xff0c;當一個異步請求超過配置的最大等待時間時&#xff0c;會拋出AsyncRequestTimeoutException異常。這個異常通常是由于服務器端的處理時間超過了客戶端允許的等待時間&#xff0c;或者是服務器本身的異步處理時間配置過短導致的。 spring: mvc: async…

scrapy寫爬蟲

Scrapy是一個用于爬取網站數據并提取結構化信息的Python框架 一、Scrapy介紹 1.引擎&#xff08;Engine&#xff09; – Scrapy的引擎是控制數據流和觸發事件的核心。它管理著Spider發送的請求和接收的響應&#xff0c;以及處理Spider生成的Item。引擎是Scrapy運行的驅動力。…

基于go-zero二次開發的腳本

param$2 # 字符串風格格式為&#xff1a;DemoName model_name$(echo "${param}" | awk -F _ {for(i1;i<NF;i) $itoupper(substr($i,1,1)) tolower(substr($i,2));}1 | tr -d ) # 字符串風格格式為&#xff1a;demoName struct_name$(echo "${model_name}&qu…

ClickHouse表引擎概述

ClickHouse表引擎概述 表引擎的功能&#xff1a; 數據的存儲方式 數據的存儲位置 是否可以使用索引 是否可以使用分區 是否支持數據副本 并發數據訪問 ClickHouse在建表時必須指定表引擎。 表引擎主要分為四大類&#xff1a;MergeTree系列、Log系列、與其他存儲/處理系…

字節碼編程bytebuddy之獲取方法信息和方法入參信息

寫在前面 本文看下通過bytebuddy如何獲取方法信息和方法的入參信息。 1&#xff1a;代碼 package com.dahuyou.bytebuddy.bb;import com.dahuyou.bytebuddy.TT; import net.bytebuddy.ByteBuddy; import net.bytebuddy.dynamic.DynamicType; import net.bytebuddy.implement…

【高中數學/對數函數】比較a=ln2/2,b=ln5/5的大小

【問題】 比較aln2/2,bln5/5的大小 【解答】 a-bln2/2-ln5/5(5*ln2-2*ln5)/10(ln2^5-ln5^2)/10(ln32-ln25)/10>0 所以a>b 【圖像】 如果繪出函數ylnx/x的圖像&#xff0c;再標記出a,b的位置&#xff0c;則繪出圖像如下&#xff1a; 由上圖可以看出&#xff0c;a,b兩…