集百家之长,成一家之言。 

1、 下载ActiveMQ

https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.15.9/apache-activemq-5.15.9-bin.zip

2、新建 Maven 项目 activemq

3、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.java</groupId>
<artifactId>activemq</artifactId>
<version>1.0.0</version> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent> <dependencies> <!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency> <!-- 热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.8.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>provided</scope>
</dependency> </dependencies> <build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

4、ActiveMQStarter.java

package com.java;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* 主启动类
*
* @author Logan
* @version 1.0.0
* @createDate 2019-05-08
*
*/
@SpringBootApplication
public class ActiveMQStarter { public static void main(String[] args) {
SpringApplication.run(ActiveMQStarter.class, args);
} }

5、SendMessageController.java

package com.java.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; /**
* 发送消息类
*
* @author Logan
* @version 1.0.0
* @createDate 2019-05-08
*
*/
@RestController
public class SendMessageController { @Autowired
private JmsMessagingTemplate jmsMessagingTemplate; /**
* 发送到的队列名
*/
private String destinationName = "handle-queue"; @GetMapping("/send")
public String send(String params) {
System.out.println("[ 收到请求 ]"); jmsMessagingTemplate.convertAndSend(destinationName, params); System.out.println("[ 返回响应 ]");
return "您的任务已提交";
} @JmsListener(destination = "result-queue") // 监听处理结果队列
public void handle(String message) {
System.out.println("[ 收到消息处理结果 ]" + System.currentTimeMillis()); System.out.println(message);
} }

6、MessageHandler.java

package com.java.listener;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component; /**
* 任务处理器,监听ActiveMQ队列中的消息,消费并处理
*
* @author Logan
* @version 1.0.0
* @createDate 2019-05-08
*
*/
@Component
public class MessageHandler { @SendTo("result-queue") // 处理结果发送到 "result-queue" 队列中
@JmsListener(destination = "handle-queue") // 监听处理消息队列
public String handle(String message) {
System.out.println("[ 处理器开始处理消息 ]" + System.currentTimeMillis()); try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
} System.out.println(message); System.out.println("[ 处理器处理消息完成 ]" + System.currentTimeMillis()); return "消息“" + message + "”处理完成";
} }

7、application.properties

spring.activemq.broker-url=tcp://127.0.0.1:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=true
spring.activemq.pool.enabled=false

8、启动

运行 activemq.bat 启动ActiveMQ 服务

运行ActiveMQStarter.java 启动项目

9、测试

浏览器输入 http://127.0.0.1:8080/send?params=Hello

浏览器快速收到响应 “您的任务已提交”,控制台日志如下:

[ 收到请求 ]
[ 处理器开始处理消息 ]1557311835328
[ 返回响应 ]
Hello
[ 处理器处理消息完成 ]1557311840353
[ 收到消息处理结果 ]1557311840369
消息“Hello”处理完成

双向通信正常!

查看消息队列服务

浏览器输入 http://127.0.0.1:8161

登录 admin/admin

可查看所有队列以及生产者和消费者情况

截图如下:

Spring boot 集成ActiveMQ(包含双向队列实现)

.

Spring boot 集成ActiveMQ(包含双向队列实现)的更多相关文章

  1. spring boot集成activemq

    spring boot集成activemq 转自:https://blog.csdn.net/maiyikai/article/details/77199300

  2. 86. Spring Boot集成ActiveMQ【从零开始学Spring Boot】

    在Spring Boot中集成ActiveMQ相对还是比较简单的,都不需要安装什么服务,默认使用内存的activeMQ,当然配合ActiveMQ Server会更好.在这里我们简单介绍怎么使用,本节主 ...

  3. Spring Boot与ActiveMQ的集成

    Spring Boot对JMS(Java Message Service,Java消息服务)也提供了自动配置的支持,其主要支持的JMS实现有ActiveMQ.Artemis等.本节中,将以Active ...

  4. 如何集成 Spring Boot 和 ActiveMQ?

    对于集成 Spring Boot 和 ActiveMQ,我们使用依赖关系. 它只需要很少的配置,并且不需要样板代码.

  5. 【ActiveMQ】Spring Jms集成ActiveMQ学习记录

    Spring Jms集成ActiveMQ学习记录. 引入依赖包 无论生产者还是消费者均引入这些包: <properties> <spring.version>3.0.5.REL ...

  6. Spring boot集成Rabbit MQ使用初体验

    Spring boot集成Rabbit MQ使用初体验 1.rabbit mq基本特性 首先介绍一下rabbitMQ的几个特性 Asynchronous Messaging Supports mult ...

  7. 在Spring下集成ActiveMQ

    1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...

  8. Spring boot集成swagger2

    一.Swagger2是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格 ...

  9. spring boot 集成 zookeeper 搭建微服务架构

    PRC原理 RPC 远程过程调用(Remote Procedure Call) 一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,R ...

随机推荐

  1. HTML5学习笔记(二)新元素和功能

    <canvas> 新元素(必须使用脚本来绘制图形) 标签 描述 <canvas> 标签定义图形,比如图表和其他图像.该标签基于 JavaScript 的绘图 API HTML5 ...

  2. 【VueJS】VueJS开发请求本地json数据的配置

    VueJS开发请求本地json数据的配置,旧版本是build/dev-server.js,新版本是build/webpack.dev.conf.js. VueJS开发请求本地json数据的配置,早期的 ...

  3. [Android]进程间通信的方法

    一.管道 管道是进程间通信中最古老的方式,它包括 无名管道 和 有名管道两种,前者用于父进程和子进程间的通信,后者用于运行于同一台机器上的任意两个进程间的通信. 无名管道由pipe()函数创建. #i ...

  4. 【考试记录】Educational Codeforces Round 59 (Rated for Div. 2)

    本来准备划水,结果被垃圾题艹翻了…… T2题意: 定义一个数$x$的数字根$S(x)$为:将其各位数字相加得到一个新数,再将新数的数字和相加直到得到一个个位数,就是该数的数字根. 例如:$S(38)= ...

  5. HDU-1281-棋盘游戏(最大匹配,枚举)

    链接:https://vjudge.net/problem/HDU-1281 题目: 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互 ...

  6. Kestrel服务器启动并处理Http请求

    从Hosting开始   知识点: 1.Kestrel服务器启动并处理Http请求的过程. 2.Startup的作用. 源码飘香: 总结: asp.net core将web开发拆分为多个独立的组件,大 ...

  7. 安卓第四次作业——简单校园二手交易APP

    一.项目团队 团队成员 姓名:汤文涛 学号:1600802129 班级:计算机164班 博客地址:https://www.cnblogs.com/taotao01/ 姓名:杨圣豪 学号:1600802 ...

  8. SpringBoot---核心---基本配置

    1.[入口类和@SpringBootApplication注解] 2.[关闭特定的配置] 3.[定制Banner] 1.1 修改Banner 1.2 关闭Banner 4.SpringBoot配置文件

  9. F. Coprime Subsequences 莫比乌斯反演

    http://codeforces.com/contest/803/problem/F 这题正面做了一发dp dp[j]表示产生gcd = j的时候的方案总数. 然后稳稳地超时. 考虑容斥. 总答案数 ...

  10. HashMap与TreeMap

    package com.jckb; import java.util.Map; import java.util.Set; import java.util.TreeMap; /**TreeMap * ...