Spring整合ActiveMQ消息队列

ActiveMQ 三种发送消息方式(同步,异步,单向) MQ 发送普通消息有三种实现方式:[color=red][b]可靠同步发送、可靠异步发送、单向(Oneway)发送。[/b][/color]本文介绍了每种实现的原理、使用场景以及三种实现的异同,同时提供了代码示例以供参考。 [size=medium][b]可靠同步发送[/b][/size] 原理:同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式。 ... 阅读详情

1、创建一个普通的maven工程,导入依赖:

	<properties>
        <spring.version>4.2.4.RELEASE</spring.version>
    </properties>

    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
            <version>5.11.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

2、在resources文件夹下创建applicationContext-mq.xml和applicationContext-listener.xml文件:
applicationContext-mq.xml主要配置了生产者相关信息:

<?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" xmlns:amq="http://activemq.apache.org/schema/core"
       xmlns:jms="http://www.springframework.org/schema/jms"
       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.xsd
		http://www.springframework.org/schema/jms
		http://www.springframework.org/schema/jms/spring-jms.xsd">

    <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->
    <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://192.168.25.128:61616"/>
    </bean>

    <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
        <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
        <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
    </bean>

    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
        <property name="connectionFactory" ref="connectionFactory"/>
    </bean>

    <!-- 点对点模式队列 -->
    <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg name="name" value="queue01"/>
    </bean>

    <!--发布订阅模式队列-->
    <bean id="topic" class="org.apache.activemq.command.ActiveMQTopic" >
        <constructor-arg name="name" value="topic01" />
    </bean>

</beans>

applicationContext-listener.xml消费者相关:

<?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" xmlns:amq="http://activemq.apache.org/schema/core"
       xmlns:jms="http://www.springframework.org/schema/jms"
       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.xsd
		http://www.springframework.org/schema/jms
		http://www.springframework.org/schema/jms/spring-jms.xsd">

    <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供-->
    <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://192.168.25.128:61616"/>
    </bean>

    <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
    <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
        <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
        <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
    </bean>

    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
        <property name="connectionFactory" ref="connectionFactory"/>
    </bean>

    <!-- 点对点模式队列 -->
    <bean id="queue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg name="name" value="queue01"/>
    </bean>

    <!--发布订阅模式队列-->
    <bean id="topic" class="org.apache.activemq.command.ActiveMQTopic" >
        <constructor-arg name="name" value="topic01" />
    </bean>

    <!-- 我的监听类 -->
    <bean id="myMessageListener" class="com.soft.listener.MyMessageListener"/>

    <!-- 消息监听容器 -->
    <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destination" ref="topic"/>
        <property name="messageListener" ref="myMessageListener"/>
    </bean>

</beans>

3、创建生产者:

package com.soft.producter;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;
import javax.jms.*;

/**
 * Created by Administrator on 2020/9/24 0024.
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-mq.xml")
public class Producter03 {

    @Autowired
    private JmsTemplate jmsTemplate;

    @Resource(name = "topic")
    private Destination destination;

    @Test
    public void test1() {
        jmsTemplate.send(destination, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {
                TextMessage textMessage = session.createTextMessage("hello spring and activemq");
                return textMessage;
            }
        });
    }

}

4、创建消费者:

package com.soft.consumer;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * Created by Administrator on 2020/9/24 0024.
 */
public class Consumer03 {
    public static void main(String[] args) throws IOException {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext-listener.xml");
        System.in.read();
    }
}

详解如何用爬虫工具批量采集阿里巴巴批发网商品数据 本文主要介绍如何使用后羿采集器的智能模式,免费采集阿里巴巴批发网商品的批发价格、发货时间、是否代发等信息。 采集字段: 商品标题、商品链接、图片链接、标签1、标签2、标签3、价格、30天成交数、 评价、店铺 功能点目录: 如何对采集字段进行配置 如何采集列表+详情页类型网页 采集结果预览: 下面我们来详细介绍一下如何免费采集1688批发网的商品数据,我们以“羽绒服女”为例,具体步骤如下: 步骤一... 阅读详情

相关推荐

YOLOv13优化Faster_Block:卷积(Partial Convolution)、多层感知机(MLP)结构和残差连接

Faster_Block 代表了现代深度学习中效率与性能平衡的一个典型案例。它通过部分卷积技术巧妙地减少了计算开销,同时通过精心设计的架构保持了强大的特征学习能力。这种设计思想对于移动端部署、实时应用和大规模模型训练都具有重要意义。 未来的发展方向可能包括更智能的动态分割策略、与新兴硬件的深度适配,以及与其他先进技术(如自注意力机制、神经架构搜索等)的结合。Faster_Block 的成功展示了在深度学习领域,创新往往来自于对问题本质的深刻理解和巧妙的工程实现。

FJN110的博客 397

消息中间件-ACTIVEMQ-10:ActiveMQ的高级特性

目录 1:异步投递 1.1:异步投递的含义 1.2:开启异步投递: ​1.3: 确保异步发送成功: 2: 1:异步投递 1.1:异步投递的含义 1.2:开启异步投递: 1.3: 确保异步发送成功: package com.wkl.queuq; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.ActiveMQMessageProducer; import org..

苍煜 464

container.zip

集装箱箱号图像及标注,共1051张图像。标注方式为整个箱号标注,例如CSLU8116467,标注结果为CSLU8116467,非单个字符标注。

8 ActiveMQ高级特性

ActiveMQ高级特性

linjun20的博客 341

Maven使用ActiveMQ

文章目录1. ActiveMQ JMS入门案例1.1 环境准备1.2 JMS-点对点模式发送消息1.3 JMS-点对点模式接收消息1.4 JMS-发布订阅模式-发送消息1.5 JMS-发布订阅模式-接收消息 1. ActiveMQ JMS入门案例 环境配置 官网地址: https://activemq.apache.org/ 下载成功后解压,进入bin目录执行 ./active start即可 访问web页面, 服务器地址:8161 用户名密码均为 admin 1.1 环境准备 pom文件引入坐标

weixin_44232093的博客 1295

ActiveMQ 简介、安装、与 Maven 项目基本使用

目录 ActiveMQ 简介 ActiveMQ 5.15.9 安装 ActiveMQ 基本使用 ActiveMQ 简介 1、ActiveMQ 是 Apache 推出的一款开源免费的,完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现的消息中间件(Message Oriented Middleware,MOM) 2、ActiveMQ 最主要的功能是实现 ...

蚩尤后裔-汪茂雄 9562

SpringActiveMq消息队列整合详解

SpringActiveMq消息队列整合详解 官方主页 Spring ActiveMq 一、概述 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者) 常见的消息中间件产品: (1)Activ...

feiyangtianyao的专栏 1194

Java消息队列-Spring整合ActiveMq

首先和大家一起回顾一下Java 消息服务,在我之前的博客《Java消息队列-JMS概述》消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Java 实现。优势:异步、可靠消息模型:点对点,发布/订阅JMS中的对象然后在另一篇博客《Java消息队列-ActiveMq实战》中,和大家一起从0到1的开启了一个ActiveMq 的项目,在项目开发的过程中,我们对ActiveMq有了一定的了解:多种语言和协议编写客户端。

CHIKA2333的博客 415

java 消息队列详解_Java消息队列-Spring整合ActiveMq的详解

本篇文章主要介绍了详解Java消息队列-Spring整合ActiveMq ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧1、概述首先和大家一起回顾一下Java 消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:1.消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Java 实现。2.优势:异步、可靠3.消息模型:点对点,发布/订阅...

weixin_34512840的博客 289

Spring整合ActiveMQ实现简单的消息队列

Spring整合ActiveMQ实现简单的消息队列 JMS简介 JMS(Java Message Service),Java消息服务。主要用于在生产者和消费者之间进行消息传送,生产者负责生产消息,消费者负责接收处理消息。在实际的业务中,生产者生成消息,发送消息,消息会保存到ActiveMQ队列中,对应的消费者会接收消息,完成特定的业务逻辑。消息的传递模型有两种,一种是点对点,一个生产者对应一个

weihao_的博客 5101

Spring boot activemq Thymeleaf 整合 利用消息队列传输数据

activemq环境搭建 1 下载 链接:http://activemq.apache.org/download.html 本人这次实验最近的版本,并选择window系统 2 解压 3 运行 在Windows上: 从控制台窗口,切换到安装目录并运行ActiveMQ: cd [activemq_install_dir] activemq_install_dir安装ActiveMQ的目录...

weixin_44450111的博客 294

SpringActiveMQ整合实例源码:深入解析消息队列集成解决方案

SpringActiveMQ整合实例源码:深入解析消息队列集成解决方案 去发现同类优质开源项目:https://gitcode.com/ SpringActiveMQ整合实例源码,一个基于Spring框架和JMS技术的消息队列管理利器,助您提升系统解耦性和性能。 项目介绍 SpringActiveMQ整合实例源码,提供了一个易于理解和使用的开源框架,集成了Spring、JMS(Java消息服...

gitblog_06781的博客 920

Spring整合ActiveMq消息队列

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 特性列表: ⒈ 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议:...

weixin_34409357的博客 152

消息队列中间件——Spring整合ActiveMQ

1. 创建applicationContext-mq.xml的配置文件,导入约束 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLS...

weixin_41933719的博客 211

java onmessage监听消息队列_详解Java消息队列-Spring整合ActiveMq

1、概述首先和大家一起回顾一下Java 消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:1.消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Java 实现。2.优势:异步、可靠3.消息模型:点对点,发布/订阅4.JMS中的对象然后在另一篇博客《Java消息队列-ActiveMq实战》中,和大家一起从0到1的开启了一个ActiveMq 的项目,在项目开发的过...

weixin_42140846的博客 1220

[消息队列]Java消息队列-Spring整合ActiveMq

1、概述   首先和大家一起回顾一下Java 消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Java 实现。 优势:异步、可靠 消息模型:点对点,发布/订阅 JMS中的对象  然后在另一篇博客《Java消息队列-ActiveMq实战》中,和大家一起从0到1的开启了一个ActiveMq 的...

疯一样的女子 627

实战Spring4+ActiveMQ5整合实现消息队列(生产者+消费者)

引言: 最近公司做了一个以信息安全为主的项目,其中有一个业务需求就是,项目定时监控操作用户的行为,对于一些违规操作严重的行为,以发送邮件(FoxMail)的形式进行邮件告警,可能是多人,也可能是一个人,第一次是以单人的形式,,直接在业务层需要告警的地方发送邮件即可,可是后边需求变更了,对于某些告警邮件可能会发送多人,这其中可能就会有阻塞发邮件的可能,直到把所有邮件发送完毕后再...

weixin_30908707的博客 285

java web中整合mq_Java消息队列-Spring整合ActiveMq

1、概述首先和大家一起回顾一下Java 消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:消息服务:一个中间件,用于解决两个或多个程序之间的耦合,底层由Java 实现。优势:异步、可靠消息模型:点对点,发布/订阅JMS中的对象然后在另一篇博客《Java消息队列-ActiveMq实战》中,和大家一起从0到1的开启了一个ActiveMq 的项目,在项目开发的过程中,我们对Ac...

weixin_34867001的博客 356
上一篇: ActiveMQ入门程序
下一篇: 使用阿里云短信服务发送短信
迷宫出路
博客等级 码龄6年 1粉丝 29原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值