Java开发中的消息通讯 📅 发布时间:2026/7/7 12:22:49 👁️ 浏览次数: 在java开发中要实现事件驱动即当发生按特定事件时通知关联方以便作出改变有三种方案一、分析对比1、观察者模式2、Redis 订阅机制3、专业版 MQ。下面逐一进行介绍并总结其各自的适用场景。1. Java 观察者模式Observer Pattern这是设计模式层面的一种行为型模式核心是实现「一对多」的对象依赖关系当一个对象被观察者 / Subject状态发生变化时所有依赖它的对象观察者 / Observer会被自动通知并更新。核心特点内存内同步通信观察者和被观察者都运行在同一个 JVM 进程内通知是同步的被观察者通知完所有观察者后自身方法才会返回。耦合度低基于接口编程Subject/Observer 接口观察者和被观察者只需依赖接口无需知道对方具体实现。无持久化 / 重试通知过程仅在内存中完成若观察者处理失败被观察者不会重试也无消息持久化能力。简单代码示例import java.util.Observable; import java.util.Observer; // 被观察者发布消息的对象 class MessageSubject extends Observable { public void publishMessage(String msg) { // 标记状态变化 setChanged(); // 通知所有观察者 notifyObservers(msg); } } // 观察者1接收并处理消息 class MessageObserver1 implements Observer { Override public void update(Observable o, Object arg) { System.out.println(观察者1收到消息 arg); } } // 观察者2接收并处理消息 class MessageObserver2 implements Observer { Override public void update(Observable o, Object arg) { System.out.println(观察者2收到消息 arg); } } // 测试 public class ObserverDemo { public static void main(String[] args) { MessageSubject subject new MessageSubject(); // 注册观察者 subject.addObserver(new MessageObserver1()); subject.addObserver(new MessageObserver2()); // 发布消息 subject.publishMessage(Hello 观察者模式); } }输出观察者2收到消息Hello 观察者模式观察者1收到消息Hello 观察者模式从中可以看出消息的处理顺序是随机的。2. Redis 订阅 / 发布机制Pub/SubRedis 提供的轻量级消息通信机制核心是「频道Channel」发布者向指定频道发送消息所有订阅该频道的客户端都会收到消息。核心特点跨进程 / 跨机器通信基于 Redis 服务端中转支持不同进程、不同机器的客户端通信。无持久化 / 无确认机制消息发送后若没有订阅者消息直接丢失Redis 不会记录消息也不保证订阅者一定收到如客户端断连。轻量简单无需复杂配置适合低可靠性要求的场景如实时通知、状态同步。简单使用示例Redis CLI# 终端1订阅频道 news redis-cli SUBSCRIBE news # 终端2向频道 news 发布消息 redis-cli PUBLISH news Redis 发布订阅测试 # 终端1 会收到 # message # news # Redis 发布订阅测试3. 专业版 MQ以 RabbitMQ 为例RabbitMQ 是基于 AMQP 协议的重量级消息中间件核心是「消息队列」消息由生产者发送到队列消费者从队列获取消息中间件提供完善的消息管控能力。核心特点高可靠性支持消息持久化磁盘存储、消息确认ACK、重试机制确保消息不丢失。异步解耦生产者发送消息后无需等待消费者处理中间件缓存消息消费者按需消费。丰富的路由策略支持交换机Direct/Fanout/Topic、队列绑定可实现复杂的消息路由如按规则分发给不同消费者。集群 / 高可用支持集群部署避免单点故障适合高并发、高可靠性要求的生产环境。简单代码示例Java RabbitMQimport com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.DeliverCallback; public class RabbitMQDemo { private static final String QUEUE_NAME test_queue; // 生产者发送消息 public static void sendMessage() throws Exception { ConnectionFactory factory new ConnectionFactory(); factory.setHost(localhost); // Redis 服务地址 try (Connection connection factory.newConnection(); Channel channel connection.createChannel()) { // 声明队列持久化 channel.queueDeclare(QUEUE_NAME, true, false, false, null); String message RabbitMQ 测试消息; // 发送消息 channel.basicPublish(, QUEUE_NAME, null, message.getBytes()); System.out.println(生产者发送消息 message); } } // 消费者接收消息 public static void receiveMessage() throws Exception { ConnectionFactory factory new ConnectionFactory(); factory.setHost(localhost); Connection connection factory.newConnection(); Channel channel connection.createChannel(); channel.queueDeclare(QUEUE_NAME, true, false, false, null); System.out.println(消费者等待接收消息...); // 消息回调处理 DeliverCallback deliverCallback (consumerTag, delivery) - { String message new String(delivery.getBody(), UTF-8); System.out.println(消费者收到消息 message); // 手动确认消息已处理确保不重复消费 channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); }; // 消费消息关闭自动确认 channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag - {}); } public static void main(String[] args) throws Exception { // 启动生产者 sendMessage(); // 启动消费者 receiveMessage(); } }二、三者核心对比维度Java 观察者模式Redis 订阅 / 发布RabbitMQ专业 MQ通信范围单 JVM 进程内跨进程 / 跨机器跨进程 / 跨机器可靠性无重试 / 无持久化无重试 / 无持久化有重试 / 有持久化 / ACK耦合度低接口解耦极低Redis 中转极低队列解耦性能极高内存通信高Redis 轻量中功能复杂适用场景单进程内状态通知轻量实时通知、低可靠高并发、高可靠业务场景核心定位设计模式代码层面轻量消息工具企业级消息中间件三、总结Java 观察者模式是「代码层面」的解耦方案仅适用于单进程内的消息通知无跨进程能力Redis 订阅机制是「轻量跨进程」的消息工具适合低可靠性要求的实时通知不适合核心业务RabbitMQ 等专业 MQ是「企业级」的消息中间件提供完善的可靠性保障是核心业务异步解耦、削峰填谷的首选。
AI 智能体的开发管理 AI 智能体的开发管理已不再是单纯的“写代码”,而是一套结合了软件工程、算法实验和法律合规的复合管理体系。与传统软件开发相比,AI 智能体具有“不可预测性”和“自主执行力”,因此管理的核心在于“确定性”的围堵。以下是全生命周期管理指… 2026/7/7 12:20:35
期刊论文写作破壁指南|虎贲等考AI:低痕合规+全流程赋能,投稿命中率翻倍 期刊论文写作破壁指南|虎贲等考 AI:低痕合规 全流程赋能,投稿命中率翻倍 “改了 8 版的期刊论文又被拒了?”“文献梳理花了 3 周,结果逻辑混乱被审稿人吐槽”“查重率反复超标,AI 痕迹太重直接被打回”…… 2026/7/7 12:21:31
从零到一:AI时代的“长期记忆体”——助力数据库全攻略 大家好!我是你们的AI技术博主。如果说大模型(LLM)是AI的“大脑”,那么**利用数据库(向量数据库)**就是它的“长期记忆”。 在这个RAG(搜索增强生成)横行的时代,如果你还… 2026/5/17 2:24:22
AI学习机技术拆解:从OCR、TTS到知识图谱,看教育硬件的真实价值 🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 最近几年,教育硬件赛道异常热闹,从传统的点读笔、学习平板,到如今集成大模型的“AI学习机”&#… 2026/7/7 12:21:30
广西专业的溶氧电极公司如何选择? 引言在水质监测领域,溶氧电极是至关重要的设备之一。它能够准确测量水中的溶解氧含量,对于环境监测、水产养殖、工业生产等多个领域都具有重要意义。然而,市场上溶氧电极品牌众多,质量参差不齐,如何选择一家专业的溶氧… 2026/7/7 12:21:30
Retinex 算法原理与 PyTorch 实现:从 SSR 到 MSRCR 的 3 个关键改进 Retinex算法在PyTorch中的工程实践:从理论到调参的完整指南当我们在夜间拍摄照片或处理监控视频时,经常会遇到图像过暗、细节丢失的问题。Retinex理论提供了一种模拟人眼视觉机制的解决方案,能够有效提升低照度图像的视觉质量。本文将深入解析… 2026/7/7 12:19:30
FCM 算法模糊因子 m 值调优指南:从1.2到3.5的5组实验对比 FCM算法模糊因子m值调优实战:5组关键实验揭示参数对聚类效果的影响机制引言:模糊聚类中的关键参数挑战在机器学习领域,聚类分析一直扮演着至关重要的角色,而模糊C均值(FCM)算法作为软聚类方法的代表&#x… 2026/7/7 12:17:29
3小时精通KeymouseGo:从重复劳动到自动化革命的完整指南 3小时精通KeymouseGo:从重复劳动到自动化革命的完整指南 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 你是否… 2026/7/7 12:15:29
3分钟解锁网易云音乐插件生态:BetterNCM安装器的极简革命 3分钟解锁网易云音乐插件生态:BetterNCM安装器的极简革命 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐的功能限制感到遗憾吗?你是否曾经羡慕… 2026/7/7 12:13:28
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践 1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8… 2026/7/7 0:01:11
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是… 2026/7/7 0:03:13
Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 【免费下载链接】Jailhouse-gui A graphical user interface (GUI) tool for configuring and managing Jailhouse, a Linux-based hypervisor for partitioning multicore processors into isolated cel… 2026/7/7 0:03:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/7 11:26:58