ActiveMQ使用spring JmsTemplate发送消息

36、Spring 中的消息传递 本文详细介绍了在 Spring 框架中如何使用 JMS 进行消息传递。首先介绍了如何搭建 ActiveMQ 消息代理,并配置连接工厂和消息目的地。接着探讨了使用 Spring 的 JmsTemplate 来简化 JMS 编程,发送和接收消息,并分析了其优势和存在的局限性。最后介绍了如何通过消息驱动的 POJO 实现异步消息接收,并比较了不同场景下的选择。通过本文,读者可以掌握 Spring 中消息传递的核心技术和应用场景。 阅读详情

下载地址:http://activemq.apache.org/download-archives.html
解压 启动bin\activemq.bat
生产者接口:

public interface ProducerService {
/**
* 向指定队列发送消息
*/
void sendMessage(Destination destination, final String msg);
/**
* 向默认队列发送消息
*/
void sendMessage(final String msg);
}
消费者接口:

public interface ConsumerService {
/**
* 接受消息
*/
void receive(Destination destination);
}

生产者实现:

@Service("producerService")
public class ProducerServiceImpl implements ProducerService {
@Resource
private JmsTemplate jmsTemplate;
/**
* 向指定队列发送消息
*/
public void sendMessage(Destination destination, final String msg) {
System.out.println("向队列" + destination.toString() + "发送了消息------------" + msg);
jmsTemplate.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(msg);
}
});
}

/**
* 向默认队列发送消息
*/

    public void sendMessage(final String msg) {
    String destination = jmsTemplate.getDefaultDestination().toString();
    System.out.println("向队列" +destination+ "发送了消息------------" + msg);
    jmsTemplate.send(new MessageCreator() {
    public Message createMessage(Session session) throws JMSException {
    return session.createTextMessage(msg);
    }
    });
    }
    }

消费者实现:

@Service("consumerService")
public class ConsumerServiceImpl implements ConsumerService {
@Resource
private JmsTemplate jmsTemplate;
/**
* 接受消息
*/
public void receive(Destination destination) {
TextMessage tm = (TextMessage) jmsTemplate.receive(destination);
try {
System.out.println("从队列" + destination.toString() + "收到了消息:\t"
+ tm.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}

maven:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency> <dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.11.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.1.4.RELEASE</version>
</dependency>
</dependencies>

spring:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!-- spring 注解支持 -->
<context:annotation-config />
<context:component-scan base-package="com.activemq.service" />
<!-- 配置JMS连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:(tcp://localhost:61616)" />
</bean>
<!-- 定义消息队列(Queue) -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- 设置消息队列的名字 -->
<constructor-arg>
<value>queue1</value>
</constructor-arg>
</bean>
<!-- 配置JMS模板(Queue),Spring提供的JMS工具类,它发送、接收消息。 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="queueDestination" />
<property name="receiveTimeout" value="10000" />
</bean>
</beans>

测试:

@Test
public void producerTest(){
// 加载spring
ClassPathXmlApplicationContext springContext = SpringContainer.getSpringContext();
ProducerService producerService = (ProducerService)springContext.getBean("producerService");
ConsumerService consumerService = (ConsumerService)springContext.getBean("consumerService");
Destination destination = (Destination)springContext.getBean("queueDestination");
producerService.sendMessage("测试消息队列");
consumerService.receive(destination);
}

public class SpringContainer {
public static final String DEFAULT_SPRING_CONFIG = "classpath:META-INF/spring/*.xml";
public static ClassPathXmlApplicationContext getSpringContext() {
return MySpringContainer.context;
}

private static class MySpringContainer{
private static ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(DEFAULT_SPRING_CONFIG.split("[,\\s]+"));
}
}
拆开一个烧坏的IGBT模块,手把手教你识别过压、过流、过温的“案发现场” 本文详细解析了IGBT模块失效分析的实战技巧,通过观察铝层熔化纹路、焊锡溢出形态等物理痕迹,手把手教你识别过压、过流、过温的典型失效模式。文章提供了从基础工具包到现场快速诊断的完整流程,帮助工程师精准定位IGBT模块失效的根本原因。 阅读详情

相关推荐

从零到一:手把手教你用海康VisionMaster完成第一个字符识别项目(附完整流程与避坑点)

本文详细介绍了如何使用海康VisionMaster完成首个字符识别项目,涵盖从环境搭建、图像预处理到系统集成的完整流程。特别分享了Blob分析配置、字符识别优化等实战技巧,帮助开发者避开常见陷阱,快速掌握VisionMaster的基本操作,提升工业自动化场景下的字符识别效率。

weixin_29313423的博客 672

2.2、使用 JmsTemplate 向 ActiveMQ 发送 Queue 类型消息

文章目录前言发送类的编写创建 类 JmsTemplateQueueProduct方法一 send方法二 convertAndSend使用 convertAndSend 发送 Java 对象测试代码先看下 http://localhost:8161/admin/queues.jsp参考资料[1].《Spring 实战 第4版》 [2].https://blog.csdn.net/winter_che...

༺ bestcxx的专栏 ༻ 4317

ctfshow---sql注入(171-213)

这里提一句,为什么不直接替换成acb这种,因为,flag原本就有字母,还原的时候会全部都还原成数字的,数字替换成符号应该也是可以的,这边测试了下除了&#好像别的符号都可以。插入查询后查询语句就会变成这样,由于id=11111这是一个不存在的id,而后面1=1又为真,所以会查询到表内所有的内容,--+是注释后面的字符。因为接受username的时候没有用引号,所以接受单纯的数字,而数字和字符比较会转换类型,字符串会变成数字0进行比较,所以相等。

fainpo的博客 1324

Spring Boot的JMS发送和接收队列消息,基于ActiveMQ

看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱Java互联网工程师面试1000题。

afsdfrsg的博客 1154

AI大模型与碳足迹评估结合模式及示范案例

AI大模型与碳足迹评估相结合,可以提供更精确、更快速的碳排放量计算,优化减排策略,并促进可持续发展目标的实现。

贾贾的博客 3944

E28 LoRa模块透传 定点传输 RSSI测试与MicroPython应用

测试说明 测试模块数:3 测试模式:配置模式和传输模式 如果没有检测到串口,首先检查是否安装串口驱动CH341SER,下载链接,提取码:vaw2 工作模式 模式(0-3) M2 M1 M0 模式介绍 备注 0 传输模式 1 0 0 串口打开,无线打开,连续透明传输 空速支持手动配置和自适应波特率自动调节;连续模式双方波特率必须一致 1 RSSI 1 0 1 串口打开,无线打开,RSSI功能打开 模块每100ms输出RSSI强度值 2 测距模式 1 1 0 保留 - 3 配置模式

GniLAY1022的博客 4243

JMS消息发送

JMS是一个Java标准,定义了使用消息代理()的通用API,在2001年提出。长期以来,JMS一直是Java中实现异步消息的首选方案。在JMS出现之前每个消息代理都有其私有的API,这就使得不同代理之间的消息代码很难互通。但是借助JMS所有遵从规范的实现都使用通用的接口,这就类似于JDBC为数据库操作提供了通用的接口。Spring通过基于模板的抽象为JMS功能提供了支持,这个模板就是。借助,能够非常容易地在消息生产方发送队列和主题消息,消费消息的一方也能够非常容易地接收这些消息。Spring。

m0_62943934的博客 2237

2026年3月GESP真题及题解(C++七级):物流网络

2026年3月GESP真题及题解(C++七级):物流网络

王老师青少年编程 1126

AMQ学习笔记 - 08. Spring-JmsTemplate之发送

概述 JmsTemplate提供了3组*3,共计9个发送用的方法。 发送的方法有3组: 基本的发送 转换并发送 转换、后处理再发送 必需的资源 必需的资源有: javax.jms.ConnectionFactoryConnectionFactory是客户端编程的开始,由它依次获取Connection、Session、Message、Messag...

weixin_30512043的博客 402

RK3568开发笔记- (TX/RX) RGMII delayline 功能调试

本文详细介绍了RK3568芯片RGMII接口delayline功能的调试过程。针对千兆以太网通信不稳定问题,通过分析RGMII时序要求,利用RK3568内置的delayline功能补偿信号延迟。调试方法包括扫描delayline窗口、测试中间值配置、优化硬件设计等步骤。文章还总结了常见问题解决方案,如PHY选型建议和自动扫描功能配置。最终实现了千兆速率下丢包率降至0.01%以下的目标,为类似开发场景提供了实用参考。

flypig has a dream! 318

自定义配方画面的具体方法示例 - 嵌入式

自定义配方画面的具体方法示例 - 嵌入式在TIA博途WinCC中,您可以通过编程来创建自定义配方画面。这些画面可以用于显示和编辑您的嵌入式系统中的配方参数。下面是一个示例,展示了如何在WinCC中实现自定义配方画面的方法。首先,您需要创建一个新的画面,并添加必要的控件来显示和编辑配方参数。在WinCC中,您可以使用文本框、按钮和标签等控件来实现这一目的。以下是一个简单的示例,展示了如何创建一个具有文本框和按钮的配方画面:创建新画面:添加控件:编辑控件属性:编写脚本: 在这个示例中,我们定义了两个变量和来存储

CyberBytezZ的博客 1039

spring的jms:用spring的JmsTemplate发送和接收消息

Spring是一个完整的J2EE框架和解决方案,完整并且模块化,你可以用的他的全部也可以只用他的一部分特性,Spring 包含 IoC, AOP, 事务处理,ORM, 也包括一个简单的MVC框架.         用Spring,自我感觉,可以使你的代码至少节约30%,它的很多template很不错的,比如简单封装后的jdbctemplate,jmstemplate等。         ioc用后

1万+

29、机器人动力学中的欧拉 - 拉格朗日与哈密顿力学

本文深入探讨了机器人动力学中的欧拉-拉格朗日与哈密顿力学框架,涵盖向量流形上的辛结构、哈密顿方程的几何代数表述、泊松括号与积分不变量等核心概念。文章详细推导了机电系统中拉格朗日量与哈密顿量的构建方法,并结合牛顿-欧拉算法给出了局部哈密顿量和动量导数的迭代计算流程,适用于多关节机器人的动力学建模与控制设计。通过应用案例展示了理论在双关节机器人手臂中的实际运用,最后展望了其在优化控制、鲁棒性提升及智能融合方向的潜力。

perl8的博客 130

淘淘商城——Spring与ActiveMQ的整合及用JmsTemplate发送消息

之前我们一直都是在学习如何使用Junit测试ActiveMQ的发送/接收消息。本文我们将一起学习下ActiveMQ如何与Spring进行整合。 首先,我们要在taotao-manager-service工程的pom.xml文件中添加以下两个依赖(由于我们搭建这个工程的时候就已经添加了对这两个jar的依赖,因此我们不用做这步了)。&lt;dependency&gt; ...

一诺 316

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

淘淘商城第74讲——Spring与ActiveMQ的整合以及使用JmsTemplate发送和接收消息

之前我们一直都是在学习如何使用Junit测试ActiveMQ的发送/接收消息。本文我们将一起学习下ActiveMQ如何与Spring进行整合。 首先,我们要在taotao-manager-service工程的pom.xml文件中添加以下两个依赖(由于我们搭建这个工程的时候就已经添加了对这两个jar的依赖,因此我们不用做这步了)。<dependency> <groupId>org.sprin

李阿昀的博客 3189

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

学习淘淘商城第六十课(Spring与Activemq的整合及用JmsTemplate发送消息)

前几节我们一起学习了用Junit测试ActiveMQ的发送接收消息。这节我们一起学习下ActiveMQ如何与Spring进行整合。        首先,要在taotao-manager-service工程的pom.xml文件中添加以下两个依赖(由于我们搭建这个工程的时候就已经添加了对这两个jar的依赖,因此我们不用做这步了) org.springframework spring-jm

u012453843的专栏 3219

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ActiveMQ使用spring JmsTemplate发送消息(一)

下载地址:http://activemq.apache.org/download-archives.html 解压 启动bin\activemq.bat 生产者接口: public interface ProducerService { /** * 向指定队列发送消息 */ void sendMessage(Destination destinatio

ZYJ_2012的博客 1万+

Spring与ActiveMQ整合及用JmsTemplate发送消息

1、首先添加依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> <dependency> <groupId>org.springframework</groupI

w 693

activemq的连接池,通过spring的JmsTemplate发送消息到指定的Destination

我们使用jms一般是使用spring-jms和activemq相结合,通过spring的JmsTemplate发送消息到指定的Destination。       首先定义一个activemq的连接池:   Xml代码 JMS、activemq中消费者收不到生产者发送的消息的原因解析" alt="复制代码" src="http://newleague.iteye.com/imag

leeking888的专栏 2万+

JMSTemplate发送消息

操作步骤 第一步:初始化一个spring容器 第二步:从容器中获得JMSTemplate对象。 第三步:从容器中获得一个Destination对象 第四步:使用JMSTemplate对象发送消息,需要知道Destination 思路分析 在配置文件中,配置JMSTemplate 通过加载Spring容器,初始化JMSTemplate对象 再从容器中,获取JMSTemplate对...

天高任鸟飞 5244

spring boot项目如何整合ActiveMQ发送延迟消息

activeMq发送延迟消息

qq_43411729的博客 1083

ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送

现在邮件发送功能已经是几乎每个系统或网址必备的功能了,从用户注册的确认到找回密码再到消息提醒,这些功能普遍的会用到邮件发送功能。我们都买过火车票,买完后会有邮件提醒,有时候邮件并不是买完票立马就能收到邮件通知,这个就用到了异步邮件发送。 那怎么实现邮件的异步发送呢? 很显然,引入MQ是一个不错的选择。刚好这段时间在练习ActiveMQ,那就拿activemq来实现异步发送邮件吧。 一、spr...

ITzhanghao的博客 128

Spring + ActiveMQ实现jms发送消息

1. 概述:Spring提供了一个用于简化JMS API使用的抽象框架,并且对用户屏蔽了JMS API中1.0.2和1.1版本的差异。 JMS的功能大致上分为两块,叫做消息制造和消息消耗。JmsTemplate 用于制造消息和同步消息接收。我们今天就用JmsTemplate实现同步的消息接受。 使用JMS发(接)消息的步骤:   1)创建连接工厂   2)使用连接工厂创建连接   3)使

shenzhen_zsw的专栏 3466

spring JMS、activemq中消费者收不到生产者发送的消息的原因解析

我们使用jms一般是使用spring-jms和activemq相结合,通过spring的JmsTemplate发送消息到指定的Destination。       首先定义一个activemq的连接池:   Xml代码   &lt;bean id="connectionFactory" class="org.apache.activemq.pool.PooledConn...

五谷杂粮 1058

Spring的JmsTemplate发送消息生成连接过多问题.md

我在使用SpringCloud框架重构我司的采集适配器时,使用的消息中间件有两个,一个是kafka,接收处理网关上报的原始数据。通过采集器的数据处理器之后,封装成为平台对象,发送到ActiveMq,进入平台业务系统。ActiveMq生产的功能,就简单使用Spring提供的jmsTemplate。但是在测试时发现了个问题。有天发现activeMq有些异常。 问题描述: 当采集器短时间内发送大量消息(...

AndyCat的知识库 2607
vitozhujava
博客等级 码龄9年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值