觀察者模式在Java微服務間的使用

一.、使用RabbitMQ來實現

(1) 生產者(訂單微服務)

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;@Service
public class OrderService {private final RabbitTemplate rabbitTemplate;public OrderService(RabbitTemplate rabbitTemplate) {this.rabbitTemplate = rabbitTemplate;}public void createOrder(Long orderId) {// 創建訂單邏輯System.out.println("訂單創建成功: " + orderId);// 發送消息到 RabbitMQrabbitTemplate.convertAndSend("order.exchange", "order.created", orderId);}
}

(2) 消費者(通知微服務)

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
public class NotificationService {@RabbitListener(queues = "order.queue")public void handleOrderCreated(Long orderId) {System.out.println("【通知服務】訂單 " + orderId + " 創建成功,發送通知!");}
}

(3) 配置 RabbitMQ 交換機和隊列

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitMQConfig {@Beanpublic DirectExchange orderExchange() {return new DirectExchange("order.exchange");}@Beanpublic Queue orderQueue() {return new Queue("order.queue");}@Beanpublic Binding binding(Queue orderQueue, DirectExchange orderExchange) {return BindingBuilder.bind(orderQueue).to(orderExchange).with("order.created");}
}

二.?使用 Spring Cloud Stream

Spring Cloud Stream 結合 Kafka 或 RabbitMQ,可以簡化微服務間的事件驅動架構。

(1) 生產者

import org.springframework.cloud.stream.function.StreamBridge;
import org.springframework.stereotype.Service;@Service
public class OrderService {private final StreamBridge streamBridge;public OrderService(StreamBridge streamBridge) {this.streamBridge = streamBridge;}public void createOrder(Long orderId) {System.out.println("訂單創建成功: " + orderId);// 發送事件streamBridge.send("orderCreated-out-0", orderId);}
}

(2) 消費者

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import java.util.function.Consumer;@Service
public class NotificationService {@Beanpublic Consumer<Long> orderCreated() {return orderId -> System.out.println("【通知服務】訂單 " + orderId + " 創建成功,發送通知!");}
}

(3) 配置 application.yml

spring:cloud:stream:bindings:orderCreated-out-0:destination: order-eventsorderCreated-in-0:destination: order-eventsdefaultBinder: rabbit

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

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

相關文章

OSPF五種數據包詳解

一、OSPF頭部封裝 OSPF是跨四層封裝協議&#xff0c;直接封裝在網絡層之上&#xff0c;需要IP協議使用一個協議號來標定——89。 OSPF頭部結構&#xff1a; 版本&#xff1a;標識OSPF的版本&#xff0c;OSPFv2&#xff08;2&#xff09;、OSPFv3&#xff08;3&#xff09;&am…

NO.64十六屆藍橋杯備戰|基礎算法-簡單貪心|貨倉選址|最大子段和|紀念品分組|排座椅|矩陣消除(C++)

貪?算法是兩極分化很嚴重的算法。簡單的問題會讓你覺得理所應當&#xff0c;難?點的問題會讓你懷疑?? 什么是貪?算法&#xff1f; 貪?算法&#xff0c;或者說是貪?策略&#xff1a;企圖?局部最優找出全局最優。 把解決問題的過程分成若?步&#xff1b;解決每?步時…

Linux(十二)信號

今天我們就要來一起學習信號啦&#xff01;&#xff01;&#xff01;還記得小編在之前的文章中說過的ctrlc嗎&#xff1f;之前小編沒有詳細介紹過&#xff0c;現在我們就要來學習啦&#xff01;&#xff01;&#xff01; 一、信號的基本介紹 首先&#xff0c;小編帶領大家先一…

Dify開發實戰-自制插件 和安裝python3最新版本 記錄版本 后續會持續更新

自定義插件 Dify 插件腳手架工具Python 環境&#xff0c;版本號 ≥ 3.12 安裝Python 一 進入官網 https://www.python.org/downloads/windows/ 點擊下載 二、安裝python&#xff08;本文中有借鑒其他圖片 所以圖片展示python版本可能不一致 請忽略&#xff09; 1.雙擊打開py…

Docker安裝、配置Redis

1.如果沒有docker-compose.yml文件的話&#xff0c;先創建docker-compose.yml 配置文件一般長這個樣子 version: 3services:redis:image: redis:latestcontainer_name: redisports:- "6379:6379"command: redis-server --requirepass "123456"restart: a…

Parasoft C++Test軟件單元測試_操作指南

系列文章目錄 Parasoft C++Test軟件靜態分析:操作指南(編碼規范、質量度量)、常見問題及處理 Parasoft C++Test軟件單元測試:操作指南、實例講解、常見問題及處理 Parasoft C++Test軟件集成測試:操作指南、實例講解、常見問題及處理 進階擴展:自動生成靜態分析文檔、自動…

二級索引詳解

二級索引詳解 二級索引(Secondary Index)是數據庫系統中除主鍵索引外的附加索引結構,用于加速基于非主鍵列的查詢操作。以下是關于二級索引的全面解析: 一、核心概念 特性主鍵索引 (Primary Index)二級索引 (Secondary Index)唯一性必須唯一可以唯一或非唯一數量每表只有…

Python_level1_字符串_11

目錄 一、基本概念 二、字符串基本操作&#xff1a;【索引、切片、遍歷】 1.字符串與列表&#xff08;相同&#xff09; 1&#xff09;索引&#xff08;從0開始&#xff09;(可以獲取某一個/某幾個連續的字符) 2&#xff09;切片 [xx:xx] 與 列表 語法規則一樣 [起…

Axure數據可視化科技感大屏設計資料——賦能多領域,展示無限價值

可視化大屏如何高效、直觀地展示數據&#xff0c;并將其轉化為有價值的決策依據&#xff0c;成為了許多企業和組織面臨的共同挑戰。Axure大屏可視化模板&#xff0c;作為一款強大的數據展示工具&#xff0c;正在以其出色的交互性和可定制性&#xff0c;賦能多個領域&#xff0c…

MySQL 性能調優:數據庫的極限運動訓練

就像運動員需要不斷訓練才能突破極限&#xff0c;數據庫也需要各種調優才能跑得更快…讓我們一起給 MySQL 安排一套專業的"健身計劃"&#xff01; 什么是 MySQL 性能調優&#xff1f;&#x1f914; MySQL 性能調優是指通過各種配置優化、結構調整和查詢改進&#x…

4.5/Q1,GBD數據庫最新文章解讀

文章題目&#xff1a;Emerging trends and cross-country health inequalities in congenital birth defects: insights from the GBD 2021 study DOI&#xff1a;10.1186/s12939-025-02412-7 中文標題&#xff1a;先天性出生缺陷的新趨勢和跨國健康不平等&#xff1a;GBD 202…

基于DeepSeek、ChatGPT支持下的地質災害風險評估、易發性分析、信息化建庫及災后重建

前言&#xff1a; 地質災害是指全球地殼自然地質演化過程中&#xff0c;由于地球內動力、外動力或者人為地質動力作用下導致的自然地質和人類的自然災害突發事件。在降水、地震等自然誘因的作用下&#xff0c;地質災害在全球范圍內頻繁發生。我國不僅常見滑坡災害&#xff0c;還…

Linux | 安裝超級終端串口軟件連接i.MX6ULL開發板(8)

01 它的安裝步驟也非常簡單,安裝語言選擇中文簡體,點擊確定,如下圖所示。 點擊下一步,如下圖所示。 02

藍橋杯15屆 寶石組合

問題描述 在一個神秘的森林里&#xff0c;住著一個小精靈名叫小藍。有一天&#xff0c;他偶然發現了一個隱藏在樹洞里的寶藏&#xff0c;里面裝滿了閃爍著美麗光芒的寶石。這些寶石都有著不同的顏色和形狀&#xff0c;但最引人注目的是它們各自獨特的 “閃亮度” 屬性。每顆寶…

Lua:第1-4部分 語言基礎

1 Lua語言入門 1.1 程序段 我們將 Lua 語言執行的每一段代碼&#xff08;例如&#xff0c;一個文件或交互模式下的一行&#xff09;稱為一個程序段 &#xff08; Chunk &#xff09; &#xff0c;即一組命令或表達式組成的序列 。 1.2 一些詞法規范 Lua 語言中的標識符&#…

CTF類題目復現總結-hashcat 1

一、題目地址 https://buuoj.cn/challenges#hashcat二、復現步驟 1、下載附件&#xff0c;解壓得到What kind of document is this_文件&#xff1b; 2、用010 Editor打開What kind of document is this_文件&#xff0c;發現是office文件&#xff1b; 3、將后綴名改為ppt時…

手機歸屬地查詢Api接口,數據準確可靠

手機歸屬地查詢是一項非常實用的功能&#xff0c;它可以幫助我們快速了解一個手機號碼的所屬地區、區號、郵政編碼等信息。在互聯網時代&#xff0c;隨著大數據和人工智能技術的發展&#xff0c;手機歸屬地查詢的API接口也變得越來越普及和便捷。 在本文中&#xff0c;我們將介…

orangepi zero燒錄及SSH聯網

下載對應版本的armbian鏡像 armbian的默認用戶root&#xff0c;默認密碼&#xff1a;1234 下載燒錄工具win32diskimager https://sourceforge.net/projects/win32diskimager/files/Archive/ 插入16G以上TF卡&#xff0c;使用win32diskimager燒錄armbian鏡像 燒錄完畢后用l…

為什么有的深度學習訓練,有訓練集、驗證集、測試集3個劃分,有的只是劃分訓練集和測試集?

在機器學習和深度學習中&#xff0c;數據集的劃分方式取決于任務需求、數據量以及模型開發流程的嚴謹性。 1. 三者劃分&#xff1a;訓練集、驗證集、測試集 目的 訓練集&#xff08;Training Set&#xff09;&#xff1a;用于模型參數的直接訓練。驗證集&#xff08;Validati…

Linux驅動開發 塊設備

目錄 序言 1.塊設備結構 分區(gendisk) 請求(request) 請求隊列 1. 多隊列架構 2. 默認限制與擴展 bio 2.塊設備的使用 頭文件與宏定義 blk-mq 相關結構和操作 塊設備操作函數 模塊初始化函數 模塊退出函數 3.總結 序言 塊設備&#xff08;如硬盤、虛擬盤&#x…