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

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. 深入剖析ASP.NET Core2.1部署模型,你会大吃一惊

    ----------------------------   以下内容针对 ASP.NET Core2.1版本,2.2推出windows IIS进程内寄宿 暂不展开讨论---------------- ...

  2. 使用makefile编译多个文件(.c , .cpp , .h等)

    有时候我们要一次运行多个文件,这时候我们可以使用Makefile!!! ◊make是什么? make是一个命令工具,是一个解释makefile中指令的命令工具.它可以简化编译过程里面所下达的指令,当执 ...

  3. 手动配置webpack之React

    安装 1.安装react转译相关依赖包: npm安装:             npm install --save-dev babel-core babel-loader babel-preset- ...

  4. ue4 模拟tween

    timeline的设置,注意timeLine可以使用外部的曲线,这个比较方便做各种曲线,timeline内部只适合打单个点

  5. poj3667(线段树区间合并&区间查询)

    题目链接: http://poj.org/problem?id=3667 题意:第一行输入 n, m表示有 n 间房间(连成一排的), 接下来有 m 行输入, 对于接下来的 m 行输入: 1 x : ...

  6. 洛谷P1831 杠杆数

    P1831 杠杆数 题目描述 如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数. 比如4139就是杠杆数,把3当成支点,我们有这样 ...

  7. 黑马学习JavaWeb入门总结

  8. [Android]HttpClient和HttpURLConnection的区别

    转载:http://blog.csdn.net/guolin_blog/article/details/12452307 最近在研究Volley框架的源码,发现它在HTTP请求的使用上比较有意思,在A ...

  9. [HNOI2010] 弾飞绵羊

    题目链接: 传送门 题目分析: 题外话: 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出: 根号算法牛逼!!! 显然,这是一道LCT裸题,然而在下并不会LCT于是采用了分块瞎搞 对于每个点 ...

  10. Windows10家庭版升级至专业版

    控制面板--系统里面修改产品密钥即可. 密钥:VK7JG-NPHTM-C97JM-9MPGT-3V66T.(先断网,不然会提示升级失败)