1、概述

    1.1、SpringBoot  对 JMS 的自动配置  位于  org.springframework.boot.autoconfigure.jms下;

    1.2、SpringBoot  支持  JMS  的实现 :ActiveMQ、HornetQ、Artemis;

    1.3、ActiveMQ

        1.3.1、概述

              SpringBoot   为我们  定义了  ActiveMQConnectionFactory  的Bean 作为连接;

                通过  "spring.activemq"  为前缀  的属性  来配置  ActiveMQ  的连接属性:

                

              SpringBoot  在  JmsAutoConfiguration  为我们 配置了 JmsTemplate,且  为我们  开启了  注解式  消息监听  的支持(自动开启 @EnableJms);

        1.3.2、实战

             a,下载ActiveMQ

                第一种方式:Docker   安装

                  docker run -d -p 61616:61616 -p 8161:8161 cloudesire/activemq

                    61616是消息代理的端口,8161是ActiveMQ的web管理界面端口,访问localhost:8161/,账户、密码:admin,admin

                第二种方式:内嵌ActiveMQ                    

             b,加载依赖

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>5.2.1.RELEASE</version>
</dependency> <dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency> <!-- 消息接收者 -->
<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-client -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.11</version>
</dependency> <!-- 消息发布者 -->
<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-broker -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.15.11</version>
</dependency>

  

package com.an.yibumessage.activemq;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jms.core.JmsTemplate; /**
* @description: 消息发送者 SpringBoot 为我们提供了CommandLineRunner,用于程序启动后执行的代码
* @author: anpeiyong
* @date: Created in 2019/12/4 19:19
* @since:
*/
@SpringBootApplication
public class MsgSender implements CommandLineRunner { //jmsTemplate:注入SpringBoot为我们提供的jmsTemplate
@Autowired
JmsTemplate jmsTemplate; public static void main(String[] args) {
SpringApplication.run(MsgSender.class,args);
} @Override
public void run(String... args) throws Exception {
//提供jmsTemplate的send方法 向 my-destination 的目的地(等于在 消息代理 上定义了一个my-destination的目的地) 发送 Msg 消息
jmsTemplate.send("my-destination",new Msg());
}
}

  

package com.an.yibumessage.activemq;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component; /**
* @description: 消息接收者
* @author: anpeiyong
* @date: Created in 2019/12/4 19:25
* @since:
*/
@Component
public class MsgReceiver { //@JmsListener(destination = "my-destination")指定监听的目的地
@JmsListener(destination = "my-destination")
public void receiveMsg(String msg){
System.out.println("接收到的消息:"+msg);
} }

  

package com.an.yibumessage.activemq;

import org.springframework.jms.core.MessageCreator;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session; /**
* @description: 消息
* @author: anpeiyong
* @date: Created in 2019/12/4 19:17
* @since:
*/
public class Msg implements MessageCreator {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("测试消息");
}
}

  

    1.4、RabbitMQ

        1.4.1、SpringBoot  对  AMQP  的自动配置  位于  org.framework.boot.autoconfigure.amqp  下;

        1.4.2、SpringBoot  为我们  配置了  连接的  ConnectionFactory  、RabbitTemplate,且   为我们 开启了  注解式  消息监听(即自动开启@EnableRabbit);

        1.4.3、RabbitMQ  的配置  可以通过"spring.rabbitmq" 来配置 RabbitMQ:

            

        1.4.4、实战

          1.4.4.1、下载RabbitMQ

               Docker 安装:docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:3-management

                   5672是 消息代理 的端口、15672是 web管理界面端口,访问localhost:15672/,账户、密码:guest,guest

          1.4.4.2、加载依赖

<!--   AMQP     -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>

  

package com.an.yibumessage.rabbitmq;

import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean; /**
* @description: 定义发送者,目的地
* @author: anpeiyong
* @date: Created in 2019/12/5 20:00
* @since:
*/
@SpringBootApplication
public class RabbitMsgSender implements CommandLineRunner { @Autowired
RabbitTemplate rabbitTemplate; /**
* 定义目的地:队列名为rabbit-queue
* @return
*/
@Bean
public Queue getQueue(){
return new Queue("rabbit-queue");
} public static void main(String[] args) {
SpringApplication.run(RabbitMsgSender.class,args);
} @Override
public void run(String... args) throws Exception {
//通过 RabbitTemplate向 rabbit-queue的队列 发送 消息: 来自rabbitmq的问候
rabbitTemplate.convertAndSend("rabbit-queue","来自rabbitmq的问候");
}
}

  

package com.an.yibumessage.rabbitmq;

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component; /**
* @description: 消息接收者
* @author: anpeiyong
* @date: Created in 2019/12/5 20:07
* @since:
*/
@Component
public class RabbitReceiver { /**
* @RabbitListener(queues = "rabbit-queue") 监听 Rabbit向目的地 rabbit-queue 发送的消息
* @param msg
*/
@RabbitListener(queues = "rabbit-queue")
public void receiveMsg(String msg){
System.out.println("接收到的消息:"+msg);
}
}

  

SpringBoot---异步消息的更多相关文章

  1. (十七)SpringBoot之使用异步消息服务jms之ActiveMQ

    一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...

  2. SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 整合消息服务 2.具体内容 对于异步消息组件在实际的应用之中会有两类: · JMS:代表作就是 ...

  3. #研发中间件介绍#异步消息可靠推送Notify

    郑昀 基于朱传志的设计文档 最后更新于2014/11/11 关键词:异步消息.订阅者集群.可伸缩.Push模式.Pull模式 本文档适用人员:研发   电商系统为什么需要 NotifyServer? ...

  4. 1.异步消息Jms及其JmsTemplate的源代码分析,消息代理ActiveMQ

    一. 介绍 借助Spring,有多种异步消息的可选方案,本章使用Jms.Jms的消息模型有两种,点对点消息模型(队列实现)和发布-订阅消息模型(主题). 图1.点对点消息模型(一对一) 图2.发布-订 ...

  5. Java异步消息平台

    l  JAVA平台异步消息模块 JAVA平台异步消息模块,是一个针对RabbitMQ的消息发送及处理封装,包含消息的配置.发送.接收.失败重试.日志记录等,总共分为4个部分: 1)RabbitMQ访问 ...

  6. C#实现异步消息队列

    原文:C#实现异步消息队列 拿到新书<.net框架设计>,到手之后迅速读了好多,虽然这本书不像很多教程一样从头到尾系统的讲明一些知识,但是从项目实战角度告诉我们如何使用我们的知识,从这本书 ...

  7. Android 异步消息处理机制前篇(二):深入理解Message消息池

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 上一篇中共同探讨了ThreadLocal,这篇我们一起看下常提到的Message消息池到底是怎么回事,废话少说吧,进入正题. 对于稍有经验的开发人员 ...

  8. Android异步消息机制

    Android中的异步消息机制分为四个部分:Message.Handler.MessageQueue和Looper. 其中,Message是线程之间传递的消息,其what.arg1.arg2字段可以携 ...

  9. 三.RabbitMQ之异步消息队列(Work Queue)

    上一篇文章简要介绍了RabbitMQ的基本知识点,并且写了一个简单的发送和接收消息的demo.这一篇文章继续介绍关于Work Queue(工作队列)方面的知识点,用于实现多个工作进程的分发式任务. 一 ...

  10. 八.利用springAMQP实现异步消息队列的日志管理

    经过前段时间的学习和铺垫,已经对spring amqp有了大概的了解.俗话说学以致用,今天就利用springAMQP来完成一个日志管理模块.大概的需求是这样的:系统中有很多地方需要记录操作日志,比如登 ...

随机推荐

  1. Atcoder arc079 D Decrease (Contestant ver.) (逆推)

    D - Decrease (Contestant ver.) Time limit : 2sec / Memory limit : 256MB Score : 600 points Problem S ...

  2. dd备份命令使用

    转载——dd 参数解释 1. if=文件名:输入文件名,缺省为标准输入.即指定源文件.< if=input file > 2. of=文件名:输出文件名,缺省为标准输出.即指定目的文件.& ...

  3. 数位dp好题整理+自己wa过的细节记录

    花(fa)神的数论题 三倍经验:烦人的数学作业 windy数 手机号码 同类分布(博客先鸽着) 板子固然好,细节无限多. 花式wa题法,警示后来人. 1.手残害人不浅 (蒟蒻的我掉坑里不止一次) 2. ...

  4. leetcode 884. 两句话中的不常见单词 (python)

    给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...

  5. 测开之路八十六:python操作sqlite

    创建sqlite数据库,并创建表和数据 python自带sqlite3库可以创建数据库文件 导入库:import sqlite3 创建游标,指定数据库名字:con = sqlite3.connect( ...

  6. Spring001--事务的传播机制

    Spring事务的传播机制 本文来自于博客:https://blog.csdn.net/yuanlaishini2010/article/details/45792069 一.事务的嵌套概念 事务的嵌 ...

  7. vue项目 Request Payload改成Form Data

    vue项目中提交表单时,请求参数是Request Payload时在main.js中加 axios.defaults.headers.post['Content-Type'] = 'applicati ...

  8. Djaon 基于 Ajax 的 json 数据传输

    关键参数:contentType:"application/json" data:JSON.stringify({ json数据 }) 再views.py中,使用request.d ...

  9. 回溯--- Permutations

    46.Permutations (Medium)](https://leetcode.com/problems/permutations/description/) [1,2,3] have the ...

  10. jsp页面随页面初始化加载js函数

    1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"% ...