使用JMS进行消息传递

SpringBoot消息源码:JmsListener注解解析 JmsListener注解解析 JMS 消息分发送消息和接收消息两种功能,发送消息很简单,注入 Jms Template 到对应的Bean 中即可使用。接收消息则需要使用@JmsListener 注解。 先看一下发送消息的官方示例。 @Component public class MyBean { private final JmsTemplate jmsTemplate; @Autowired public MyBean(JmsTemplate jmsTemplate) { this. jmsTe 阅读详情

你需要什么

  • 大约 15 分钟
  • IntelliJ IDEA或其他编辑器
  • JDK 1.8或更高版本
  • Maven 3.2+

你会建立什么

本指南将指导您完成使用 JMS 代理发布和订阅消息的过程。您将构建一个应用程序,该应用程序使用Spring的 JmsTemplate 发布单个消息并使用托管 bean 的 @JmsListener 注释方法订阅该消息。

构建步骤

1、添加maven依赖。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- jms依赖  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-broker</artifactId>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

2、创建一个建消息POJO。

public class Email {

    private String to;
    private String body;

    //...setter 、getter..
}

3、创建一个消息接收器(receiver)

import com.sqlb.guidejms.bean.Email;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class Receiver {

    @JmsListener(destination = "mailbox", containerFactory = "myFactory")
    public void receiveMessage(Email email) {
        System.out.println("Received <" + email + ">");
    }

}

JmsListener注解定义了此方法应侦听的 Destination 的名称以及用于创建基础消息侦听器容器的对JmsListenerContainerFactory的引用。严格地说,最后一个属性是不必要的,除非你需要定制容器的构建方式,因为Spring Boot会在必要时注册一个默认工厂。

4、配置一把


import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.support.converter.MappingJackson2MessageConverter;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.jms.support.converter.MessageType;

import javax.jms.ConnectionFactory;

@Configuration
public class JmsConfig {

    @Bean
    public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
                                                    DefaultJmsListenerContainerFactoryConfigurer configurer) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        // This provides all boot's default to this factory, including the message converter
        configurer.configure(factory, connectionFactory);
        // You could still override some of Boot's default if necessary.
        return factory;
    }

    @Bean // Serialize message content to json using TextMessage
    public MessageConverter jacksonJmsMessageConverter() {
        MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
        converter.setTargetType(MessageType.TEXT);
        converter.setTypeIdPropertyName("_type");
        return converter;
    }
}

4、使用Spring发送


import com.sqlb.guidejms.bean.Email;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class JmsController {

    @Autowired
    JmsTemplate jmsTemplate;

    @RequestMapping("/hello")
    public String hello(){
        System.out.println("Sending an email message.");
        jmsTemplate.convertAndSend("mailbox", new Email("info@example.com", "Hello"));
        return "ok";
    }
}

5、启动程序

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.annotation.EnableJms;

@SpringBootApplication
@EnableJms
public class GuideJmsApplication {

    public static void main(String[] args) {
        SpringApplication.run(GuideJmsApplication.class, args);
    }
}

@EnableJms触发发现使用@JmsListener注解的方法,创建消息监听器容器。

测试

浏览器端http://localhost:8080/hello:

控制台输出可以看出,已经接收到消息了。

原文地址 https://spring.io/guides/gs/messaging-jms/

JMS 消息队列接口基本使用指南 阅读详情

相关推荐

springBoot(11)---整合Active消息队列

简单理解: Active是Apache公司旗下的一个消息总线,ActiveMQ是一个开源兼容Java Message Service(JMS) 面向消息的中件间. 是一个提供松耦合的应用程序架构. 主要用来在服务与服务之间进行异步通信的。 一、搭建步骤 1、相应jar包 <!-- 整合消息队列ActiveMQ --> <dependency> <groupId>or...

Java76476434341的博客 455

@Jmslistener注解

@Jmslistener注解

wangshenmeqi的博客 3424

49、Spring消息传递:JMS、AMQP和Kafka的使用指南

本文深入介绍了如何使用Spring框架支持的JMS、AMQP和Kafka三种消息传递协议,涵盖JMS事务管理、连接池配置,以及Spring AMQP和Spring Kafka的发送与接收消息实践。同时对比了不同协议的特性,给出了实际应用中的注意事项和性能优化建议,帮助开发者构建高效可靠的消息传递系统。

tgb34567890的博客 120

Java消息服务~@JmsListener集成

1、配置ActiveMQ连接工厂、JmsTemplate等 import javax.jms.ConnectionFactory; import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springfr

小强快跑~~ 4345

Lede(OpenWrt)安装和双宽带叠加

LEDE是一个专为路由器和嵌入式设备设计的自由和开源的操作系统。LEDE是OpenWRT项目的一个分支项目。LEDE操作系统包括许多路由器有用的功能,如网络地址转换、防火墙、端口转发、DHCP服务器等。

我的博客 6441

ubuntu18.04在carla中导入Roadrunner自建的地图

进入Carla根目录下的Import文件夹在Import文件夹下面新建一个文件夹 这里我取名为RoadA进入新建的文件夹,创建json文件,json文件的名字与文件夹名字相同再将从RoadRunner中导出的地图文件夹(map)放入新建的文件夹目录下重点关注.fbx和.xodr文件然后打开新建的json文件添加并修改如下代码name为RoadRunner中导出的地图文件夹名字。

justinyjf的博客 1898

使用Spring JMS轻松实现异步消息传递

  异步进程通信是面向服务架构(SOA)一个重要的组成部分,因为企业里很多系统通信,特别是与外部组织间的通信,实质上都是异步的。Java消息服务(JMS)是用于编写使用异步消息传递的JEE应用程序的API。传统的使用JMS API进行消息传递的实现包括多个步骤,例如JNDI查询队列连接工厂和Queue资源,在实际发送和接收消息前创建一个JMS会话。   Spring框架则简化了使用JEE组件(

leagle 2622

并行计算:从概念起源到多层次架构设计及其发展历程的全面解析

20世纪70年代,第一台并行计算机于1972年产生(ILLIAC IV,伊利诺依大学),由64个处理器组成,可扩展性好,但可编程性差。如有21亩地需要除草,一个人一天只能除一亩地的草,那么需要21天才能除完草,这在现实中是不太可能的,因庄稼是有时间段的。其二是机群系统是高性能计算机的一种,它的技术基础和工业基础都是商品化和标准化。之所以称为“专用”,并不是说它们只能运行某种应用,是指它们的组成部件是专门设计的,它们的CPU板、内存板和I/O板,甚至操作系统,都是不能在其它系统中使用的。

1654

使用 GlassFish 实现 JMS 消息传递

摘要:对于当今的电子商务来说,在分布式异构系统之间进行通信已经成为不可避免的需求。现在,随着 Java 消息服务 (JMS) 等消息标准的出现,开发松散耦合的同步或异步通信分布式系统(用于交换商务数据和事件)已经非常简单。   本文主要介绍如何使用 JMS 和消息驱动 Bean

1753

STM32电机库(ST-MC-Workbench)实战指南——三电阻电流采样电路参数配置详解

本文详细解析了STM32电机库(ST-MC-Workbench)中三电阻电流采样电路的参数配置方法,涵盖电阻选型、放大增益计算、滤波时间优化等关键步骤。通过实战案例和调试技巧,帮助工程师快速掌握电流采样技术,提升电机控制系统的精度与稳定性。特别针对ST-MC-Workbench界面参数设置提供了详细指导。

weixin_29186249的博客 505

MiniMaxH3+ComfyUI本地部署:一键整合包、工作流搭建与报错排查

本地部署视频生成模型时,模型权重、推理框架与自定义节点的匹配是核心挑战。MiniMaxH3作为多模态生成模型,通常依赖ComfyUI这类节点式工作流引擎实现可视化调度。一键整合包将Python环境、PyTorch算子、模型文件预置封装,大幅降低部署门槛,并通过半精度加载、显存碎片回收等机制优化推理速度。在文生视频、图生视频与批量生成场景中,清晰的节点链路和参数调优能力直接影响输出质量与显存占用。针对模型不识别、节点执行失败等高频问题,系统排查命令行日志与模型目录可快速定位故障。本文以MiniMaxH3整合包

weixin_29047545的博客 578

使用 JMS 进行消息传递

本指南将指导您完成使用 JMS 代理发布和订阅消息的过程。

jackiendsc的博客 134

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

笔试题-2023-芯原-数字前端设计or验证【纯净题目版】

w0shishabi的博客 5685

使用Spring进行JMS消息传递

我碰巧看到了一篇文章,是有关使用Spring框架来简化与IBM WebSphere MQ的交互的。这篇文章是对Spring中的JMS支持的相当不错的介绍,但是有一些重要的东西它却没有提到。   Spring作为J2EE框架的地位,与最近BEA宣布在WebLogic中对Spring提供正式支持这则消息结合起来,就会使一些开发人员认为,文章中的代码可以不加修改地用于在WebLogic上运行的J2EE应...

傲漫天使的天空 201

【数据库系统工程师】5.4Internet基础知识

目录一、思维导图二、知识点1.Internet 概述2.Internet 地址(1)域名(2)IP 地址(3)NAT技术(4)IPv6简介3.Internet 服务(1)域名服务(2)远程登录服务(3)电子邮件服务(4)WWW服务(5)文件传输服务 一、思维导图 二、知识点 1.Internet 概述 2.Internet 地址 (1)域名 ○ 一个完整、通用的层次型主机域名由如下4部分组成: 计算机主机名.本地名.组名.最高层域名 (2)IP 地址 ○ 每个IP地址都由4个小于256的数字组成,数字之

邓邓子的博客 911

AgentScope Java 2.0 最佳实践:9 个完整示例手把手带你开发 Java‑Agent

本文基于9 个完整示例,深入剖析从基础对话(BasicChatExample)、工具调用(@Tool 注解)、结构化输出(POJO Schema)、ToolGroup 自主管理、MCP 外部工具集成、Hook 生命周期监控、Spring Boot SSE 流式 Web、JsonSession 会话持久化到中断恢复的全链路实战教程。

program哲学 1624

spring-jms_使用Spring JMS进行1-2-3消息传递

在Spring系列的第四部分(也是最后一部分)中,我将向您介绍Spring JMS(Java消息服务)框架的功能。 JMS定义了Java应用程序通过面向消息的中间件(MOM)创建和交换消息的标准方法。 与本系列的前几篇文章一样,我使用一个简单的示例来演示Spring JMS的功能。 我将使用Spring JMS框架通过JMS接口与IBM的WebSphere MQ集成,以开发基于点对点(P2...

cusi77914的博客 422

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用Spring JMS轻松实现异步消息传递[转载]

  异步进程通信是面向服务架构(SOA)一个重要的组成部分,因为企业里很多系统通信,特别是与外部组织间的通信,实质上都是异步的。Java消息服务(JMS)是用于编写使用异步消息传递的JEE应用程序的API。传统的使用JMS API进行消息传递的实现包括多个步骤,例如JNDI查询队列连接工厂和Queue资源,在实际发送和接收消息前创建一个JMS会话。   Spring框架则简化了使用JEE组件(包括...

Team12-billgmh Chacing Dreams 185

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 验证表单输入
下一篇: css 中的position定位和flex布局分析
She_lock
博客等级 码龄12年 157粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值