Spring JMS异步发收消息 ActiveMQ

spring整合JMS一同步收发消息(基于ActiveMQ的实现) 1. 安装ActiveMQ 到Apache官方网站下载最新的ActiveMQ的安装包,并解压到本地目录下,下载链接如下:http://activemq.apache.org/download.html,解压后的目录结构如下: bin目录结构如下: 如果我们是32位的机器,就双击win32目录下的activemq.bat,如果是64位机器,则双击 阅读详情

JMS(使用消息中介:ActiveMQ)
JMS为JAVA开发者提供了一个与消息中介进行交互,以及发送和接收消息的标准API,而且每一个消

息中介的实现都会支持JMS。(即JMS为所有消息中介提供了统一接口);JmsTemplate是Spring消

除冗长和重复JMS代码的解决方案。JmsTemplate可以创建连接,获取会话,以及发送和接收消息。
1.在Spring中安装ActiveMQ
www.activemq.org    apache-activemq-4.1.0-incubator.zip ,把apache-activemq-4.1.0-

incubator.jar复制到lib中
启动ActiveMQ的脚本:运行刚下载的文件/bin/activemq.bat.  这样就可以使用ActiveMQ进行中介服

务了。
2.applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 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-2.0.xsd">
<!--创建连接工厂-->
<bean id="connectionFactory"
  class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"></property>
</bean>
<!-- 声明ActiveMQ消息目标,目标可以是一个队列,也可以是一个主题ActiveMQTopic-->
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="rantz.marketing.queue"></constructor-arg>
</bean>
<!---->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
  <property name="connectionFactory" ref="connectionFactory"></property>
  <property name="defaultDestination" ref="destination"></property>
  <property name="receiveTimeout" value="6000"></property>

</bean>
<bean id="sender" class="com.roadrantz.marketing.Sender">
  <property name="jmsTemplate" ref="jmsTemplate"></property>

</bean>
<bean id="receiver" class="com.roadrantz.marketing.Receiver">
  <property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
</beans>

3.发送消息Sender.java
package com.roadrantz.marketing;

import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class Sender {
 private JmsTemplate jmsTemplate;
   public void sendInfo()
   {
  jmsTemplate.send(new MessageCreator(){
   public Message createMessage(Session session) throws JMSException
   {   MapMessage message=session.createMapMessage();
         message.setString("lastName", "pp");
      return message;
   }
  
  });
   }
public JmsTemplate getJmsTemplate() {
 return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
 this.jmsTemplate = jmsTemplate;
}
}
4.接收消息Receiver.java
package com.roadrantz.marketing;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.JmsUtils;
public class Receiver {
   private JmsTemplate jmsTemplate;
   public Receiver() {}
   public String receiveMessage()
 {   String my="";
  MapMessage message=(MapMessage)jmsTemplate.receive();
    try{
     my= message.getString("lastName");
    }

    catch(JMSException e)
    {  throw JmsUtils.convertJmsAccessException(e); }
  return my;
 }
 public JmsTemplate getJmsTemplate() {
  return jmsTemplate;
 }
 public void setJmsTemplate(JmsTemplate jmsTemplate) {
  this.jmsTemplate = jmsTemplate;
 }
5.测试
test.java发
package com.roadrantz.marketing;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test {
 public static void main(String[] args) {
  // TODO 自动生成方法存根
   ApplicationContext context = new ClassPathXmlApplicationContext

("applicationContext.xml");
   Sender sender = (Sender) context.getBean("sender");
         sender.sendInfo(); 
 }
}
test2.java收
package com.roadrantz.marketing;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class test2 {
 public static void main(String[] args) {
  // TODO 自动生成方法存根
   ApplicationContext context = new ClassPathXmlApplicationContext

("applicationContext.xml");
   Receiver receiver = (Receiver) context.getBean("receiver");
   System.out.print(receiver.receiveMessage());  }
} 
 
附件:    csdn空间4/JMS.rar
csdn空间4/apache-activemq-4.1.0-incubator.zip

应用: 站内短信息 

异步发,有目标,先发,后收,不管时间

Spring ActiveMQ 整合(四): JMS 事务管理 1.为什么要用事务?        消息事务是在生产者producer到broker或broker到consumer过程中同一个session中发生的,保证几条消息在发送过程中的原子性。        可以在connection的createSession方法中指定一个布尔值开启,如果消息确认机制是事务确认,那么在发送message的过程中session就会开启事务(实际上broker的) 阅读详情

相关推荐

Spring framework(10):集成 JMS 异步消息队列(ActiveMQ)

JMS 和 Apache-ActiveMQ 简介 JMS(Java Message Service,Java 消息服务)是一个 Java 面向消息中间件(MOM)的 API,用于 Java 应用程序或分布式系统之间发送信息,异步通信; JMS 具有以下优势 通信的异步性,客户端获取信息不需要主动发送请求,由 JMS 中间件自动推送信息; 消息发送的准确性,JMS 中间件可以

Al_assad的博客 924

在Spring下集成ActiveMQ

org.springframework.jms.core.JmsTemplate 1.参考文献 Spring集成ActiveMQ配置Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spring环境下集成ActiveMQ。如果要在spring下集成ActiveMQ,那么就需要

CTO成长之路——Rosanu 769

spring整合JMS之异步消息监听机制

在上一节中,我们说到,使用receive方法来接收生产者消息的时候,只会运行一次,然后就会被阻塞,除非我们加个while(true),一直不停的轮询。今天就说说如何采用消息监听机制,来实现及时的收取消息。 消息监听器:MessageListener JMS给我们提供了一个消息监听器的接口,只要我们实现了这个接口,就可以实现对消息的及时监听。实现代码如下: package co

牛奋lch 4202

Spring Jms异步消息推送

最近公司项目业务要求用户下单之后发送邮件通知功能,邮件发送功能我使用的是spring自带的mail功能见我的其他博客有讲解,但是邮件这段加入进去之后不能够影响原有的程序功能,比如:邮件发送失败导致系统报异常影响订单交易程序,因此,我在这里使用了异步消息推送服务,使用的技术:activeMQ+spring+jms,利用spring自带jms功能,实现了异步消息推送,这样即使邮件发送失败也不会影响主程

石惠之恋 3646

ActiveMQ与Spring JMS集成消息传递实践指南

Spring框架从一开始就提供了对Java消息服务(JMS)的支持,这主要体现在它能够简化与JMS资源的交互以及消息驱动POJO的开发。通过Spring提供的抽象和组件,开发者可以更加方便地使用JMS进行消息的发送和接收,同时还能享受到Spring IoC容器提供的各种便利,比如依赖注入、声明式事务管理、事件传播等。Spring对JMS的支持,主要通过以下两个核心组件实现::这是一个模板类,提供了简洁的API来发送和接收消息。它隐藏了创建连接、会话和目标等复杂的JMS编程模型细节。

weixin_30700095的博客 757

Spring与ActiveMQ集成实现企业级消息传递

Spring 框架是一个全面的编程和配置模型,用于现代Java-based企业应用程序。在众多特性中,依赖注入(DI)是Spring最核心的概念之一,也是构建松耦合和可测试代码的基础。Java消息服务(JMS)是Java平台上关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。JMS是一种提供标准的产生、发送、接收消息的API,旨在跨越不同的平台和消息服务提供商。JMS定义了以下概念:消息代理(Message Broker)

weixin_42509507的博客 1032

Spring + JMS + ActiveMQ实现简单的消息队列(监听器异步实现)

首先声明:以下内容均是在网上找别人的博客综合学习而成的,可能会发现某些代码与其他博主的相同,由于参考的文章比较多,这里对你们表示感谢,就不一一列举,如果有侵权的地方,请通知我,我可以把该文章删除。 1、jms-xml Spring配置文件 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="htt

fmt.Println( 2万+

SDM660电源部分配置:

SDM660电源部分配置: Panel power supplies 1、Reference power supplies Description Name Regulator Voltage (V) Panel power supply 0 vddio PMIC 660/L11 1.8 Panel power supply 1 Lab PMIC 660/lab 4.6 Panel power s...

weixin_41811215的博客 4727

JMS与Spring之二(用message listener container异步收发消息)

本文主要参考Java Message Service(2nd)by Marc Ricbard。 在Spring框架中使用JMS传递消息有两种方式:JMS template和message listener container,前者用于同步收发消息,后者用于异步收发消息。 本文

moonsheep_liu的专栏 5万+

LLM推理服务中的SLO感知调度优化实践

在AI服务架构中,服务级别目标(SLO)是衡量服务质量的核心指标,特别是在大型语言模型(LLM)推理场景下。SLO通常涉及TTFT(首token时间)、TPOT(每token生成时间)和端到端延迟等关键维度,这些指标直接影响用户体验和系统效率。传统FCFS调度策略由于缺乏SLO感知能力,在混合负载下往往导致资源利用率低下和SLO达标率骤降。通过引入基于模拟退火的动态调度算法和精准的延迟预测模型,可以实现对不同优先级请求的智能调度,显著提升GPU利用率和SLO达标率。这种技术方案特别适用于需要同时处理实时对话

weixin_42549154的博客 368

保姆级教程:用CameraX API快速搞定Android多摄像头切换与预览(附避坑指南)

本文提供了一份详细的CameraX API教程,帮助开发者快速实现Android多摄像头切换与预览功能。通过简化API设计和生命周期感知能力,CameraX大幅降低了开发复杂度,同时解决了多摄像头兼容性、预览优化等常见问题。文章包含完整代码示例和实战避坑指南,特别适合需要高效集成相机功能的Android开发者。

weixin_42699679的博客 165

在Spring中发送异步消息——JMS

异步消息简介 在起那面几张介绍的像RMI、Hessian、Burlap、HttpInvoker这些都是同步调用,他们的缺点就是在调用过程中引用程序将会阻塞,一直等到调用完成或者超时(如果设置了超时的话),那么如果这样的调用很频繁,或者收到网络延迟的影响,将会给用户带来不好的用户体验。而异步消息则是发送了消息之后,可以继续做其他的事情,不需要等待消息处理完成。异步消息主要是通过一个中间服务,发送的...

qq_38779912的博客 638

【Matlab 传感器布局优化】基于群智能算法的wsn覆盖优化研究

本文主要是对同构和异构传感器在指定空间内的布局进行优化,以最大覆盖率为目标,使用了DBO/SCA/WOA/SSA/NOA等启发式算法,在100x100的空间内,对30,100,200个传感器进行优化,得到最优的布局位置和对应覆盖率。

u013367499的博客 1817

spring整合ActiveMQ订阅模式(对象消息发送)

归纳一下spring整合activemq的基础配置以及使用,监听到消息后的更多逻辑操作需要自己完成,需要源代码可联系:993610778

微阳潋潋落寒汀的博客 3951

快充协议全兼容!HUSB390对比测试:iPhone/小米/华为哪个充电最快?

本文深入评测了HUSB390快充协议芯片的全兼容性能,展示了其在iPhone、小米和华为设备上的极速充电表现。通过智能功率分配算法和多协议并行处理引擎,HUSB390实现了高效的动态调压和温度控制,显著提升多设备充电效率。特别适合需要同时为不同品牌设备快充的用户。

dd012的博客 1万+

【OpenClaw】Edict 三省六部制部署与启动

文章摘要 本文聚焦Edict系统的本地部署与启动,提供三种安装方式:Docker快速体验、macOS/Linux原生安装和Windows生产仿真。核心目标是让用户能够独立完成系统启动和基础问题排查,确保看板、后端服务、同步脚本和网关正常运行。文章强调环境检查的重要性,并给出具体验收标准:浏览器能访问看板页面(http://127.0.0.1:7891)和接口返回JSON数据。同时提供一键启动/停止脚本和常见问题处理建议,帮助用户快速验证部署结果。配套系列教程涵盖部署启动、使用实战、二次开发和封装版本使用等内

Mr数据杨 2901

Spring消息——JMS发送消息

Spring消息——JMS发送消息JMS概述ActiveMQ概述ActiveMQ安装使用传统JMS发送消息编码新建工程目录结构编写rmi功能运行实例 JMS概述 Java Message Service (JMS) The Java Message Service (JMS) API is a messaging standard that allows application componen...

szuaudi的博客 950

Word2vec核心模型精讲:CBOW与Skip-gram

Word2vec是Google提出的词向量模型,通过CBOW和Skip-gram两种神经网络架构将词汇映射到低维向量空间。CBOW通过上下文预测中心词,训练速度快但高频词表现更好;Skip-gram则相反,通过中心词预测上下文,适合处理生僻词。为解决softmax计算效率问题,Word2vec引入基于哈夫曼树的Hierarchical Softmax优化技术,将复杂度从O(V)降至O(logV)。文章详细解析了两种模型的原理差异,并演示了哈夫曼树的构造过程及其在词向量训练中的关键作用,这种结合词频的优

Trisyp的博客 527

Spring Boot 集成 ActiveMQ 实现异步消息通信(一)

简化配置流程、消息转换器(MessageConverter)的使用、生产环境中的最佳实践。

1164

银行统一监管报送系统

依据《银行业金融机构数据治理指引》,银行业金融机构应当建立适应监管数据报送工作需要的信息系统,实现流程控制的程序化,提高监管数据加工的自动化程度。银行业金融机构应当将监管数据纳入数据治理,建立工作机制和流程,确保监管数据报送工作有效组织开展,监管数据质量持续提升。银行通常要对接报送EAST5.0、1104、CRSS等近40个监管应用,涉及近1000张报表。表13-01是主要的监管报送应用、报送依据、报送规范、监管机构名称。

银行信息系统应用架构详解 4346

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

消息中间件(异步消息传递)——ActiveMQ

ActiveMQ 一、 ActiveMQ 简介 1 什么是 ActiveMQ ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个 完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现,尽管 JMS 规范出台已经是很久 的事情了,但是 JMS 在当今的 J2EE 应用中间仍然扮演着特殊的地位。 2 什么是消息 “消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串; 也可以更复杂,可能包含嵌入对象。 3

LiLi的博客 1816

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

spring boot-分布式定时任务中,异步执行时JMS无法重新投递消息

这篇博客是紧接着上篇博客来说的http://blog.youkuaiyun.com/liuchuanhong1/article/details/64126346 在上篇博客中,我们基本上实现了分布式的定时任务架构的搭建,但是,当我们异步消费消息中间件中的消息的时候,如果执行的过程中抛了异常,那么,我们无法做到消息重试,示例如下: @Component // 必须加此注解,该类才会被作为Message

牛奋lch 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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...

结合Spring2.0和ActiveMQ进行异步消息调用(转)

在Spring 2.0之前,Spring的JMS的作用局限于产生消息。这个功能(封装在 JmsTemplate 类中)当然是很好的, 但是,它没有描述完整的JMS堆栈,比如像消息的 异步 产生和消耗。JMS堆栈缺少的这一部分已经被添加,Spring 2.0现在提供对消息异步消耗的完整支持。      让我们从一个例子开始。      首先我们打开ActiveMQ。从ActiveMQ的安装路径上的b

Mr_Von的专栏 1469

从ActiveMQ异步消息异步调用的区别到线程池的总结

ActiveMQ的异步消息 MQ的异步消息指的不是必须每生产一次就消费一次。生产方只要放到消息通道里。消费方不断地去监听就可以了。异步消息可以使用JMS来编码操作。JMS本身就是异步的。直接标注上代码即可。 首先引入maven依赖: <dependency> <groupId>org.springframework.boot</gro...

Boogie 2206

ActiveMQ消息队列:从入门到Spring Boot实战

在复杂的企业级应用中,不同服务之间往往存在着错综复杂的依赖关系。异步通信:许多业务场景下,生产者无需立即知道消费者处理结果,例如用户下单后,库存扣减、积分发放、物流通知等操作可以异步进行,避免阻塞主流程,提升用户体验。系统解耦:消息队列作为中间件,将消息的发送方和接收方解耦。生产者无需关心消费者是谁、有多少个,只需将消息发送到MQ;消费者也无需知道消息来自何处,只需从MQ中获取并处理。这种松耦合的设计使得系统各模块可以独立开发、部署和扩展,降低了系统复杂度。流量削峰。

weixin_56018532的博客 1360

Spring Integration系列《3》JMS ActiveMQ实列

源码地址 https://gitee.com/bseaworkspace/study_java_web/tree/master/springIntegrationJMS 代码使用方式 提供了三个测试用例,分别测试了 GatewayDemo uses the DemoBean service, which will echo the response and upper-casing it.结合SpringIntegration的channel-adapter 实现点对点的JMS通信实列 ChannelAd

心猿意码 1594
上一篇: DWR实战二 loading界面创建
下一篇: Ajax的DWR框架三在线交流
facepp
博客等级 码龄22年 342粉丝 638原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值