详解Java消息队列-Spring整合ActiveMq

详解Java消息队列-Spring整合ActiveMq

简介

Java消息队列是一种常见的异步通信方式,可用于解耦系统各个模块间的耦合,提升系统性能和可靠性。本文将介绍如何使用Spring框架整合ActiveMq消息队列,并给出两个示例演示如何使用。

准备工作

  • JDK 1.8+
  • Maven 3.0+
  • ActiveMq 5.15.9
  • Spring 5.0.7

操作步骤

  1. 下载ActiveMq并解压;

  2. 启动ActiveMq。

进入ActiveMq的bin目录下,执行以下命令:

bash
./activemq start

启动后可访问 http://localhost:8161/admin进入ActiveMq的管理界面,默认用户名和密码均为admin

  1. 创建Spring项目并添加依赖。

引入Spring的消息队列依赖:

xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

  1. 配置ActiveMq连接信息。

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

  1. 定义消息发送者和消息接收者Bean。

```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import javax.jms.Destination;
import javax.jms.Queue;

public class JmsProducer {
// 用于发送消息到消息队列
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
// 消息队列
@Autowired
private Queue queue;

   public void send(String message) {
       this.jmsMessagingTemplate.convertAndSend(this.queue, message);
   }

}

public class JmsConsumer {
// 接收消息从消息队列
@JmsListener(destination = "queue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
```

在上述代码中,JmsMessagingTemplate是Spring提供的用于操作消息队列的类,通过其convertAndSend()方法发送消息到队列;@JmsListener注解则是Spring提供的用于监听指定消息队列的注解。

  1. 测试示例1:简单消息发送和接收。

发送消息:

java
String message = "Hello world!";
jmsProducer.send(message);

接收消息:

java
@JmsListener(destination = "queue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}

  1. 测试示例2:使用消息监听器容器。

java
@Component
public class JmsMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message: " + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}

通过配置消息监听器容器org.springframework.jms.listener.DefaultMessageListenerContainer,可以实现监听指定队列的消息,并将其传递给指定的消息监听器:

```java
@Configuration
public class AppConfig {
@Bean
public Queue queue() {
return new ActiveMQQueue("queue");
}

   @Autowired
   private Queue queue;

   @Autowired
   private JmsMessageListener jmsMessageListener;

   @Bean
   public DefaultMessageListenerContainer messageListenerContainer() {
       DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
       container.setConnectionFactory(connectionFactory());
       container.setDestination(queue);
       container.setMessageListener(jmsMessageListener);
       return container;
   }

}
```

结语

本文详细介绍了如何使用Spring整合ActiveMq消息队列,并给出了两个示例演示如何使用。活用消息队列可提升系统的性能和可靠性,值得我们在开发过程中好好利用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java消息队列-Spring整合ActiveMq - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 几道和「黑洞照片」那种海量数据有关的算法问题

    这个话题涉及到海量数据处理和算法问题,我会尽可能详细地解释来帮助大家了解。 大数据处理的常用算法 排序算法 排序是大数据处理中最常用的算法之一。这是因为,在许多情况下,我们需要对从数据库中获取的大量数据进行排序,以便更好地分析和使用它们。以下是一些常用的排序算法: 冒泡排序:这是一种简单的排序算法,在较小的数据集中表现良好,但对于大规模数据集则效率较低。 快…

    Java 2023年5月19日
    00
  • Spring Data JPA 实体类中常用注解说明

    下面开始为您讲解 Spring Data JPA 实体类中常用注解的说明,请注意文末有示例代码供参考。 1. @Entity @Entity 注解用于声明当前类是一个实体类(Entity),必须使用此注解标记实体类,也可以自定义表名或指定 catalog 或 schema。 2. @Table @Table 注解可以指定当前实体类要映射到的数据库表名,可以自…

    Java 2023年5月20日
    00
  • 一篇文章带你入门Java运算符

    一篇文章带你入门Java运算符 运算符是编程语言中非常重要的基础知识之一,Java作为一门主流的编程语言也是如此。在这篇文章中,我们将详细讲解Java中的各种运算符,带你入门Java运算符。本文主要内容如下: 基础概念介绍 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 基础概念介绍 在学习Java运算符之前,我们需要先了解一些基础概念。Java中…

    Java 2023年5月23日
    00
  • Java二维数组与稀疏数组相互转换实现详解

    Java二维数组与稀疏数组相互转换实现详解 二维数组与稀疏数组在Java中是常见的数据结构,二维数组用来表示二维网格数据,稀疏数组用来表示大部分元素都是相同值的数组。本篇攻略将详细讲解Java中如何实现二维数组与稀疏数组的相互转换。 1. 二维数组转稀疏数组 实现过程:1. 遍历二维数组,统计非零元素的个数count。2. 创建一个稀疏数组sparseArr…

    Java 2023年5月26日
    00
  • jQuery表格插件datatables用法总结

    jQuery表格插件datatables用法总结 什么是datatables datatables是一款基于jQuery库的表格插件,它通过客户端无刷新式展示表格数据,并提供了搜索、分页、排序等功能,能够大大简化web应用程序的开发过程。 如何使用datatables 数据源准备 datatables可以直接使用HTML表格中的数据作为数据源,也可以通过AJ…

    Java 2023年6月16日
    00
  • SpringBoot实现物品点赞功能

    下面是关于SpringBoot实现物品点赞功能的完整攻略: 前言 物品点赞功能是很常见的网站功能之一。Spring Boot 给我们提供了很好的实现方式,通过本文,你可以学习到 Spring Boot 如何实现物品点赞功能。 实现过程 创建数据库 首先我们需要创建一个数据库来储存点赞信息。数据库需要包含以下两个表: item 表:储存物品信息,包括物品 ID…

    Java 2023年5月23日
    00
  • Spring mvc文件上传下载代码实例

    Spring MVC文件上传下载代码实例 在Web应用程序中,文件上传和下载是常见的功能。Spring MVC提供了方便的API来处理文件上传和下载。本文将介绍如何在Spring MVC中实现文件上传和下载,并提供两个示例说明。 文件上传 步骤一:配置文件上传 首先,我们需要在spring-servlet.xml文件中配置文件上传。可以通过添加以下配置来实现…

    Java 2023年5月17日
    00
  • 详解Java如何优雅地书写if-else

    下面我将为你详细讲解“详解Java如何优雅地书写if-else”的完整攻略。 一、Java中if-else语句的基本用法 在Java中,if-else语句是一种常见的控制流程语句,用于根据条件是否满足来执行不同的代码。其基本语法如下: if (condition) { // condition为真时执行的语句块 } else { // condition为假…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部