Springboot整合activemq的方法步骤

今天呢心血来潮,也有很多以前的学弟问到我关于消息队列的一些问题,有个刚入门,有的有问题都来问我,那么今天来说说如何快速入门mq。

一、首先说下什么是消息队列?

1.消息队列是在消息的传输过程中保存消息的容器。

二、为什么要用到消息队列?

主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达 MySQL ,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

三、消息队列都分为哪几种?

1. ActiveMQ/ApolloMQ

优点:老牌的消息队列,使用Java语言编写。对JMS支持最好,采用多线程并发,资源消耗比较大。如果你的主语言是Java,可以重点考虑。

缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。

2. RocketMQ/Kafka

优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。

缺点:所谓鱼和熊掌不可兼得,放弃了一些消息中间件的灵活性,使用的场景较窄,需关注你的业务模式是否契合,否则山寨变相使用很别扭。除此之外,RocketMQ没有.NET下的客户端可用。RocketMQ身出名门,但使用者不多,生态较小,毕竟消息量能达到这种体量的公司不多,你也可以直接去购买阿里云的消息服务。Kafka生态完善,其代码是用Scala语言写成,可靠性比RocketMQ低一些。

3. RabbitMQ

优点:生态丰富,使用者众,有很多人在前面踩坑。AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。

缺点:Erlang代码你Hold得住不? 虽然Erlang是天然集群化的,但RabbitMQ在高可用方面做起来还不是特别得心应手,别相信广告。

四、我们今天重要说下如何快速上手activemq,也是在mq中最容易上手的一种

1.首先我们先下载activemq  链接 http://activemq.apache.org/download.html

2.

3.下载对应的版本

4.启动activemq(我这里是mac环境,windows可双击运行)

出现这个说明mq已经启动我可可以通过active默认的端口号运行https://http://localhost:8161/

这里看到他会alert一个登陆窗口 默认账号密码都为admin

点击Queues查看队列是的消息,这样我们activemq就算运行了

那么现在我将它整合在springboot里,也十分简单 首先看下项目结构

5.加入依赖 本次用的gradle

compile('org.springframework.boot:spring-boot-starter-activemq:2.1.1.RELEASE')

6.yml配置

spring:
 activemq:
  broker-url: tcp://localhost:61616
  user: admin
  password: admin

这里注意了配置的端口号和启动端口号不是一直的,默认为61616,在conf的jetty.xml下课进行查看也可以修改

咱们直接上代码

7.Controller

package com.gd.acticemqtest.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * @DATA 2019-01-09 22:42
 * @Author 张国伟 WeChat:17630376104
 * @Description TODO
 */
@RestController
public class controllerDemo {

  @Autowired
  private JmsTemplate jmsTemplate;

  @RequestMapping("/sendMsg")
  public void sendMsg(String msg) {
    jmsTemplate.send("q2", new MessageCreator() {
      @Override
      public Message createMessage(Session session) throws JMSException {

        TextMessage textMessage = session.createTextMessage();
        textMessage.setText(msg);
        return textMessage;
      }
    });
  }

这里一定要注意的是JmsTemplate到底引用的那个包

jmsTemplate.send是向队列里发送消息,并且为队列起一个名字

package com.gd.acticemqtest.serive;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;

/**
 * @DATA 2019-01-09 22:54
 * @Author 张国伟 WeChat:17630376104
 * @Description TODO
 */
@Service
public class ActiveMsgListener {

  @JmsListener(destination = "q2")
  public void rctiveMsg(String message){
  System.out.println("------监听到activemq的数据"+message);
  }

}

jmsListener是spring的针对消息的监听器,当mq里有数据后第一时间把消息监听到,我们跑一把试试

当敲下enter那一刻,控制台已经把刚刚存进去的消息给打印了出来

那这个时候我们再来看下activemq的服务中是否有消息

可以看到这时候队列里已经有了q2这个消息。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈Spring Boot 整合ActiveMQ的过程

    RabbitMQ是比较常用的AMQP实现,这篇文章是一个简单的Spring boot整合RabbitMQ的教程. 安装ActiveMQ服务器,(也可以不安装,如果不安装,会使用内存mq) 构建Spring boot项目,增加依赖项,只需要添加这一项即可 <!-- 添加acitivemq依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring

  • 详解spring boot整合JMS(ActiveMQ实现)

    本文介绍了spring boot整合JMS(ActiveMQ实现),分享给大家,也给自己留个学习笔记. 一.安装ActiveMQ 具体的安装步骤,请参考我的另一篇文章:http://www.jb51.net/article/127117.htm 二.新建spring boot工程,并加入JMS(ActiveMQ)依赖 三.工程结构 pom依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xm

  • Spring Boot与ActiveMQ整合的步骤

    1.1使用内嵌服务 (1)在pom.xml中引入ActiveMQ起步依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> (2)创建消息生产者 /** * 消息生产者 * @author Administrator **/ @RestC

  • Springboot整合activemq的方法步骤

    今天呢心血来潮,也有很多以前的学弟问到我关于消息队列的一些问题,有个刚入门,有的有问题都来问我,那么今天来说说如何快速入门mq. 一.首先说下什么是消息队列? 1.消息队列是在消息的传输过程中保存消息的容器. 二.为什么要用到消息队列? 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达 MySQL ,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误.通过使用消息队列

  • Springboot整合Urule的方法步骤

    摘要: Urule决策引擎可简化开发校验.决策类代码,底层由java语言实现,可基于SpringBoot快速配置,因为Urule工具目前为非常用工具,网上关于SpringBoot整合Urule资料匮乏,一直自己摸索,简单的环境搭建也费了些功夫,遇到些坑,作此记录 本次记录主要记录Urule-Serve端Urule-Client端分开部署的模式,这种使用场景也会更多:嵌入式成一个项目的配置和Urule-Server端一致. 一.Urule-Server端: 1.1. 基于maven的SpringB

  • 详解Springboot整合ActiveMQ(Queue和Topic两种模式)

    写在前面: 从2018年底开始学习SpringBoot,也用SpringBoot写过一些项目.这里对学习Springboot的一些知识总结记录一下.如果你也在学习SpringBoot,可以关注我,一起学习,一起进步. ActiveMQ简介 1.ActiveMQ简介 Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件:由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. 2.ActiveMQ下载 下载地址:htt

  • SpringBoot整合之SpringBoot整合MongoDB的详细步骤

    目录 一.创建项目,选择依赖 二.引入相关依赖(非必要) 三.如果是第一次使用MongoDB,首先先创建用户 四.定义核心配置文件 六.创建dao层,这里的dao层有两种写法 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.本文介绍SpringBoot整合之SpringBoot整合MongoDB的步骤. 一

  • SpringBoot整合Ehcache3的实现步骤

    目录 前言 缓存配置 maven引用 个性化配置 代码注入配置 缓存操作 缓存预热 更新操作 查询操作 缓存与数据库数据一致性 前言 公司部门老项目要迁移升级java版本,需要进行缓存相关操作,原框架未支持这部分,经过调研java相关缓存方案大致分为ehcache和redis两种,redis的value最大值为500mb且超过1mb会对存取有性能影响,业务系统需要支持列表查询缓存就不可避免的涉及到大量的数据存取过滤,ehcache支持内存+磁盘缓存不用担心缓存容量问题,所以框架初步版本决定集成e

  • SpringBoot整合activemq的案例代码

    目录 ActiveMQ是什么 1.安装activemq(linux) 2.SpringBoot整合activemq案例 2.1 pom.xml 2.2 application.properties 2.3 消息实体 2.4 主程序 2.5 定义消息的发送和接收方法 2.6 测试 ActiveMQ是什么 ActiveMQ是消息队列技术,为解决高并发问题而生ActiveMQ生产者消费者模型(生产者和消费者可以跨平台.跨系统)ActiveMQ支持如下两种消息传输方式 点对点模式,生产者生产了一个消息,

  • Springboot整合ActiveMQ实现消息队列的过程浅析

    目录 pom中导入坐标 书写yml配置 业务层代码 监听器代码 业务层代码 确保你启动了自己电脑的activemq. pom中导入坐标 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> 书写yml配置 spring:  activemq:

  • SpringBoot整合Thymeleaf的方法

    简介: 在目前的企业级应用开发中 前后端分离是趋势,但是视图层技术还占有一席之地, Spring Boot 对视图层技术提供了很好的支持,官方推荐使用的模板引擎是 Thymeleaf 不过像 FreeMarker 也支持, JSP 技术在这里并不推荐使用. Thymeleaf 是新一代 Java 模板引擎,类似于 Velocity.FreeMarker 等传统 Java 模板引擎.与传统 Java 模板引擎不同的是 Thymeleaf 支持 HTML 原型,既可 以让前端工程师在浏览器中直接打

  • SpringBoot整合Flyway的方法(数据库版本迁移工具)

    Flyway是什么 Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate.Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot. 简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的

  • SpringBoot整合spring-data-jpa的方法

    jpa是JavaEE定义的一种规范,常用的实现一般是Hibernate,而spring-data-jpa则是对jpa的又一层封装,提供了更多便捷的方法. 这里不会深入讲解spring-data-jpa的使用,只是讲解怎么快速的整合使用,目的是帮助那些想学,但是在整合上老是翻车的同学 导入依赖 <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> &

随机推荐