Springboot中使用activemq

1. 引入ActiveMQ的SpringBoot插件

<!-- ActiveMQ --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>

2. application中增加activemq的配置

spring: activemq: #ActiveMQ服务器地址 broker-url: tcp://127.0.0.1:61616 user: admin password: admin jms: #false == Queue ; true == Topic ; 默认为false pub-sub-domain: false

3. Java代码

package com.geofly.apicall.mq; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.geofly.apicall.model.entity.FlowConfig; import com.geofly.apicall.service.FlowConfigService; import com.geofly.apicall.service.FlowEngineService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; import java.util.Map; /** * ActiveMQ 消息消费者 * 接收消息并触发指定的流程 */ @Slf4j @Component public class ActiveMQConsumer { @Autowired private FlowConfigService flowConfigService; @Autowired private FlowEngineService flowEngineService; /** * 接收消息并触发流程 * 消息格式示例: {"triggerName": "workorder_finish", "params": {"id": 123, "status": "done"}} * * @param message JSON 格式的消息字符串 */ @JmsListener(destination = "${spring.activemq.destination:flow.trigger.destination}") public void receiveMessage(String message) { log.info("接收到 ActiveMQ 消息: {}", message); try { // 1. 解析消息 if (!JSONUtil.isTypeJSONObject(message)) { log.warn("消息不是有效的 JSON 对象: {}", message); return; } JSONObject json = JSONUtil.parseObj(message); String triggerName = json.getStr("triggerName"); // 兼容性处理:如果消息中直接传了 flowCode 也可以 String flowCode = json.getStr("flowCode"); Map<String, Object> params = null; if (json.containsKey("params")) { params = json.get("params", Map.class); } // 2. 查找流程 FlowConfig flowConfig = null; if (triggerName != null) { flowConfig = flowConfigService.getByTriggerName(triggerName); } else if (flowCode != null) { flowConfig = flowConfigService.getOne( new LambdaQueryWrapper<FlowConfig>() .eq(FlowConfig::getFlowCode, flowCode) ); } if (flowConfig == null) { log.error("未找到对应的流程,triggerName: {}, flowCode: {}", triggerName, flowCode); return; } // 3. 检查状态 if (flowConfig.getStatus() != 1) { log.warn("流程已禁用: {} ({})", flowConfig.getFlowName(), flowConfig.getFlowCode()); return; } // 4. 执行流程 log.info("从 ActiveMQ 消息触发流程: {} (ID: {})", flowConfig.getFlowName(), flowConfig.getId()); flowEngineService.executeFlow(flowConfig.getId(), params); } catch (Exception e) { log.error("处理 ActiveMQ 消息异常: {}", message, e); } } }

这里监听了一个事件,如果ActiveMQ收到相应的事件就会触发这个方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1190503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公路修建(洛谷P1265)

题目描述某国有 n 个城市&#xff0c;它们互相之间没有公路相通&#xff0c;因此交通十分不便。为解决这一“行路难”的问题&#xff0c;政府决定修建公路。修建公路的任务由各城市共同完成。修建工程分若干轮完成。在每一轮中&#xff0c;每个城市选择一个与它最近的城市&…

程序监控与异常防护-PART-Simulink-看门狗

程序监控与异常防护-PART-Simulink-看门狗程序监控与异常防护-PART-Simulink-看门狗 关键词 看门狗、程序监控、异常处理、Simulink、自动化控制一、问题分析:为什么需要看门狗 在自动化实验控制平台中,我们经常会遇…

LIDA 477 编码器位移/速度/加速度采集与转换-PART-LIDA 477-采集转换

LIDA 477 编码器位移/速度/加速度采集与转换-PART-LIDA 477-采集转换LIDA 477 编码器位移/速度/加速度采集与转换-PART-LIDA 477-采集转换 关键字:LIDA 477、Hidenhain、磁姗尺、编码器、位移、速度、加速度、Simulin…

1121

编程练习

软件升级回退报告

一、引言为提升软件系统性能、优化现有功能并修复已知问题&#xff0c;本团队于[升级实施日期]对[软件名称]系统开展了版本升级工作&#xff0c;计划将系统从[原版本号]升级至[目标版本号]。升级后&#xff0c;系统出现[简要说明核心问题&#xff0c;如&#xff1a;关键功能异常…

SQL Server数据库

数据库按照特定的数据结构来组织、存储和管理数据的集合作用高效地存储大量数据&#xff0c;并支持快速的查询、修改、删除等操作同时保证数据的安全性、完整性和一致性。一&#xff0c;创建主数据文件命令创建&#xff1a;create 修改&#xff1a;alt…

1124

编程练习

灵活用工系统开发全流程与案例分享【弹性用工解决方案|附源码】

一、模块设计分包商&#xff1a;税地注册公司&#xff0c;用于在当地申请有利的税收政策&#xff0c;是实际报税公司。 代理商&#xff1a;代理商可以邀请客户使用本平台&#xff0c;平台会给予代理商一定的服务费差价作为佣金。 客户&#xff1a;使用本平台进行工资发放的…

RocksDB 可直接运行的实战示例(多语言 + 完整安装 + 基础 CRUD + 事务 + 生产调优)

包含 C++(原生最优)、Java (企业级主流)、Python (快速上手) 三种最常用语言的完整代码,所有示例复制即可运行,涵盖你需要的「安装步骤、基础读写、事务操作、生产级调优参数」,优先级从高到低排序,按需选择即可。 核心前提:RocksDB 是嵌入式键值库,所有操作都是本地库调…

7月4日

今天:完成PTA部分练习,看了看大道至简,看了37页,明白原来完成一个项目是很难的,需要团队合作,就跟建筑一样,需要共同搭配合作,才能建造起来“房子” 明天:学习JAVA基础

VideoDownloadHelper视频下载助手终极指南:全网视频轻松保存

VideoDownloadHelper视频下载助手终极指南&#xff1a;全网视频轻松保存 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 想要将网页中的精彩视…

专业陪诊系统:守护银发健康

博主介绍&#xff1a; 所有项目都配有从入门到精通的安装教程&#xff0c;可二开&#xff0c;提供核心代码讲解&#xff0c;项目指导。 项目配有对应开发文档、解析等 项目都录了发布和功能操作演示视频&#xff1b; 项目的界面和功能都可以定制&#xff0c;包安装运行&#xf…

1126

编程练习

1013

JAVA练习,学习连接数据库

RocksDB 全面指南

RocksDB 是由 Meta&#xff08;原 Facebook&#xff09;开发的高性能嵌入式键值存储引擎&#xff0c;基于 Google LevelDB 改进而来&#xff0c;专为高吞吐量、低延迟的存储场景设计。它是一个 C 库而非独立数据库服务&#xff0c;可嵌入应用程序中提供持久化键值存储能力。一、…

7月5日

今天:完成10道编程题 明天:继续完成假期任务

1128

编程练习

Python 自动去除 代码中Debug 代码的终极方案(AST 实战)

在真实项目中&#xff0c;Debug 代码通常包括&#xff1a; print()logging.debug()logging.info()logger.debug()临时调试函数&#xff08;如 debug()、pprint()&#xff09;if DEBUG: 块 &#x1f449; 手动删除不现实&#xff0c;正则又极易误伤 &#x1f449; AST 是唯一靠谱…