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. kubernetes-helm程序包管理器(二十)

    helm概述 Helm是Kubernetes的包管理器,Helm 让我们能够像 yum 管理 rpm 包那样安装.部署.升级和删除容器化应用. Helm的核心术语: Chart:一个helm程序包,是 ...

  2. 主流架构 : MVP

    1 背景 MVC 平时开发APP时会发现,activity职责非常重.以MVC角度来看: M:model数据操作层(网络请求,耗时操作,数据存取,其他逻辑操作) V:view,指xml布局文件,其实并 ...

  3. mongotemplate 简单使用

    怎么说呢,工作需要,不可能给你慢慢学的时间,一切以先解决当前jira为前提, mondb 安装不说了网上一搜就有,推荐图形管理界面 robo3t 比较直观 1.多条件查询这个比较简单 有两种方法 1C ...

  4. python中的包和文件夹的区别

    python的模块,就不得不说包(package),package是module的集合,在一个package中有很多的module, 还是以之前的index.py与baiduHq.py模块为案例,说明 ...

  5. linux下升级php5.4到php5.6

    进入终端后查看php版本 php -v 输出可能如下: PHP 5.4.35 (cli) (built: Nov 14 2014 07:04:10) Copyright (c) 1997-2014 T ...

  6. openWRT利用mac地址限制局域网内设备访问外网

    利用iptable设置防火墙: iptables -A INPUT -p tcp -m mac --mac-source 44:94:FC:25:68:8D --dport 80 -j DROP

  7. java项目中,针对缓存问题的处理方式【接口中的处理方式】

    1.在service包中,分别建立了关于缓存的一系列的接口.类等,封装到一个工具包中: 临时缓存的接口(代码部分): package com.tools; import java.util.Date; ...

  8. SpringBoot(九) -- SpringBoot与数据访问

    一.简介 对于数据访问层,无论是SQL还是NOSQL,Spring Boot默认采用整合Spring Data的方式进行统一处理,添加大量自动配置,屏蔽了很多设置.引入各种xxxTemplate,xx ...

  9. npm基本介绍及使用

    1.什么是npm npm全称node package manager,是node包管理和分发工具.可以理解为前端的maven.通过npm可以很方便的下载js库,管理前端工程.node已经集成npm工具 ...

  10. 洛谷P4391 [BOI2009]Radio Transmission 无线传输

    (https://www.luogu.org/problemnew/show/P4391) 题目描述 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最 ...