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. Taylor Swift -《Fearless》

    最近网上都搜不到Taylor的歌了,分享一张love best的album给大家,支持霉霉的还是去买正版把~ 专辑曲目: 01. “Jump Then Fall” 03:5702. “Untoucha ...

  2. Maps.newHashMap 和 new HashMap的区别

    区别: (1)Map<String, Object> result = new HashMap<String,Object>(); 这种是java原生API写法,需要你手动加泛 ...

  3. be of +名词 = 形容词 (词性变化) ; || it is adj. of + 人称宾格 = 人称主格 + 形容词 (人称变化)

    be of +名词 = 形容词 这是一种常用的构词法 of + 名词 就等于 对应的形容词, 这也是, 扩展词汇的一种方法. 原则上你可以任意使用, 但是, 通常只是针对 那些形容词, 名词相对来说比 ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_06 Set集合_5_HashSet存储自定义类型元素

    想存储的元素不重复,就必须重写hashCode和equals这两个方法 新建一个Person类.添加姓名和年龄这两个成员变量..get和set,有参和无参构造. 重点是重写了toString的方法 自 ...

  5. 阿里云DNS api接口 shell 更改DNS解析

    可定时任务检查域名解析,调用alidns.sh更新DNS解析 #!/bin/bash # alidns.sh #https://www.cnblogs.com/elvi/p/11663910.html ...

  6. c# 解决Socket问题——由于目标机器积极拒绝,无法连接

    关于单机出现这种问题不多赘述,主要阐述服务机和客户机出现这种问题的解决办法. 1.检查防火墙 这种问题出现的最多,特别是你的服务机还是买的各家的云产品,比如阿里云就是到防火墙中添加出入站规则,Azur ...

  7. Jenkins持续集成_04_解决HTML测试报告样式丢失问题

    前言 最近进行Jenkins自动化测试持续集成,配置HTML测试报告后,但是点击进去发现测试报告样式丢失,未加载CSS&JS样式,如下图: 由于Jenkins中配置了CSP(Content S ...

  8. Linux操作系统(六)_文件系统结构

    linux只有一个文件树,整个文件系统是以一个树根"/"为起点的 所有的文件和外部设备都以文件的形式挂在上面,linux发行版本的根目录大都是以下结构: /bin /sbin /b ...

  9. 解决django项目无法连接远程mysql的问题

    我们都知道django项目可以通过修改settings.py文件中的DATABASES这个对象,使用不同的数据库. 如图所示,我们想连接远程的mysql,修改settings.py的配置 然后我们在终 ...

  10. jQuery源码分析系列——来自Aaron

    jQuery源码分析系列——来自Aaron 转载地址:http://www.cnblogs.com/aaronjs/p/3279314.html 版本截止到2013.8.24 jQuery官方发布最新 ...