新闻中心

JS如何与Spring消息队列集成_J*aScript与Spring消息队列集成的实现方法

2025-11-03
浏览次数:
返回列表
Spring通过REST API和WebSocket作为中间层,实现J*aScript与RabbitMQ的消息交互:1. Spring集成RabbitMQ并提供POST接口接收前端请求;2. J*aScript调用该接口发送消息,Spring将其转发至队列;3. 消费者处理后通过WebSocket将结果推送给前端,完成双向通信。

js如何与spring消息队列集成_javascript与spring消息队列集成的实现方法

J*aScript本身运行在浏览器或Node.js环境中,无法直接与Spring框架的消息队列(如RabbitMQ、Kafka)进行通信。但可以通过中间层实现前后端协同处理消息。常见的做法是:Spring作为后端服务使用消息队列进行异步通信,前端J*aScript通过HTTP或WebSocket与Spring后端交互,间接完成消息的发送与接收。

1. Spring集成消息队列(以RabbitMQ为例)

在Spring Boot项目中集成RabbitMQ,用于接收和发送消息:

  • 添加依赖(M*en):


  org.springframework.boot
  spring-boot-starter-amqp

  • 配置application.yml:

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

  • 创建消息生产者:

@Service
public class MessageProducer {
  @Autowired
  private RabbitTemplate rabbitTemplate;

  public void sendMessage(String message) {
    rabbitTemplate.convertAndSend("myQueue", message);
  }
}

  • 创建消息消费者:

@Service
public class MessageConsumer {
  @RabbitListener(queues = "myQueue")
  public void receive(String message) {
    System.out.println("Received: " + message);
  }
}

2. 提供REST API供J*aScript调用

Spring提供一个REST接口,供前端J*aScript发送消息请求:

@RestController
public class MessageController {
  @Autowired
  private MessageProducer messageProducer;

  @PostMapping("/send")
  public ResponseEntity sendMessage(@RequestBody Map payload) {
    messageProducer.sendMessage(payload.get("msg"));
    return ResponseEntity.ok("Message sent!");
  }
}

3. J*aScript通过HTTP发送消息

前端J*aScript通过fetch调用Spring的REST接口:

OneStory OneStory

OneStory 是一款创新的AI故事生成助手,用AI快速生成连续性、一致性的角色和故事。

OneStory 319 查看详情 OneStory

async function sendMsg() {
  const res = await fetch('http://localhost:8080/send', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ msg: 'Hello from JS!' })
  });
  const data = await res.json();
  console.log(data);
}

4. 使用WebSocket实现实时消息推送

若需从Spring向J*aScript实时推送消息(例如消费队列后的结果),可使用WebSocket:

  • Spring配置WebSocket:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
  @Override
  public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/ws").withSockJS();
  }

  @Override
  public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.enableSimpleBroker("/topic");
    registry.setApplicationDestinationPrefixes("/app");
  }
}

  • 控制器推送消息:

@Controller
public class WsController {
  @Autowired
  private SimpMessagingTemplate messagingTemplate;

  public void sendMessageToClient(String message) {
    messagingTemplate.convertAndSend("/topic/messages", message);
  }
}

  • J*aScript订阅消息:




<script><br> const socket = new SockJS('/ws');<br> const stompClient = Stomp.over(socket);<br><br> stompClient.connect({}, function(frame) {<br> stompClient.subscribe('/topic/messages', function(message) {<br> console.log('Received: ' + message.body);<br> });<br> });<br> </script>

当Spring从RabbitMQ接收到消息后,可在MessageConsumer中调用WsController的sendMessageToClient方法,将消息推送给前端。

基本上就这些。通过HTTP实现JS发送消息到Spring,再由Spring转发至消息队列;通过WebSocket实现Spring将队列消息实时推送到前端J*aScript。这种方式解耦清晰,适用于大多数Web应用。

以上就是JS如何与Spring消息队列集成_J*aScript与Spring消息队列集成的实现方法的详细内容,更多请关注其它相关文章!


# 加载  # 乾县建设网站有哪些  # 关键词排名业务员怎么排的  # 上海网站排名优化工具  # 怎么优化网站流程图制作  # 营销推广页图片大全高清  # 网站外优化的作用  # 东莞网络推广网站优化  # 现代企业营销推广方式  # 武汉比较好的关键词排名  # 房地产线上营销推广论文  # 可以通过  # 相关文章  # 将其  # 适用于  # js开发spring教程  # 滑块  # 如何使用  # 后端  # 中间层  # 发送消息  # np  # node  # json  # node.js  # 前端  # js  # java  # word  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读  美团外卖商家服务中心入口 美团商家版官网入口  Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注  Angular Material 垂直步进器:实现底部到顶部排序的教程  Python多版本共存与虚拟环境管理深度指南  《刺客信条:影》PS5 Pro和Switch 2画面对比  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  php源码怎么在电脑上测试_电脑测试php源码方法步骤【教程】  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  探索高级语言到原生C/C++的转译:挑战与内存管理策略  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  React项目中导航栏Logo自适应布局:避免裁剪与布局溢出  铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则  写好的html代码怎么运行出来_运行写好的html代码方法【教程】  FullCalendar 自定义按钮样式定制指南  c++如何使用chrono库处理时间_c++标准库时间与日期操作  CSS布局中意外空白:解决padding-top导致的顶部间距问题  b站如何看历史记录_b站观看历史找回方法  PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧  在哪找SublimeJ远程工具_SFTP插件配置教程  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  从OpenAI API响应中高效提取生成文本  J*aScript类型检查_j*ascript代码规范  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  理解J*aScript Promise的微任务队列与执行顺序  抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧  mysql备份恢复性能优化_mysql备份恢复性能优化方法  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  如何在CSS中使用浮动制作导航栏_float实现水平菜单  解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常  抖音网页版怎么|直播|_抖音网页版开播操作指南  MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具  Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置  MAC怎么让Dock栏只显示当前运行的应用_MAC终端命令实现极简Dock栏  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  如何使用J*aScript精确选择并批量修改特定父元素下子链接的样式  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  移动端XML文件怎么转换成Excel 手机和平板上的解决方案  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  2026春节假期时间安排 2026春节假日查询  Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择  抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站  C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图  Android Studio计算器C键功能异常排查与修复教程  MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令  痛风发作了怎么办? 快速止痛和后期饮食调理  实现全屏滚动与导航点:专业教程 

搜索