详解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 中的变量类型

    Java 中的变量类型 Java 是一种强类型语言,也就是说每个变量在声明时都必须指定一个明确的数据类型。Java 支持以下八种基本数据类型: 整型 byte: 字节型,占用 1 个字节,取值范围为 -128 到 +127。 short: 短整型,占用 2 个字节,取值范围为 -32768 到 +32767。 int: 整型,占用 4 个字节,取值范围为 -…

    Java 2023年5月26日
    00
  • java处理字节的常用工具类

    Java处理字节的常用工具类 Java作为一门强大的编程语言,提供了一系列的工具类来处理字节数据。在以下的文章中,我将会详细讲解Java处理字节的常用工具类,包括InputStream、OutputStream、ByteArrayInputStream、ByteArrayOutputStream、DataInputStream、DataOutputStrea…

    Java 2023年5月27日
    00
  • 对Java字符串与整形、浮点类型之间的相互转换方法总结

    下面是“对Java字符串与整形、浮点类型之间的相互转换方法总结”的攻略。 1. Java字符串转整型 Java字符串可以通过Integer类的静态方法parseInt()实现转换成整型数据。具体语法如下: String s = "123"; int i = Integer.parseInt(s); // 这里的i值为123 同样的,如果字…

    Java 2023年5月27日
    00
  • Spring Security 多过滤链的使用详解

    下面我来详细讲解“Spring Security 多过滤链的使用详解”的完整攻略。 什么是多过滤链? Spring Security 多过滤链是指在同一个应用程序中为不同的 URL 模式定义不同的过滤器链。这样做的目的是为了更好的控制应用程序的安全访问权限,从而满足不同的安全要求。比如,一些 URL 需要进行用户认证和授权,而另一些 URL 只需要进行简单的…

    Java 2023年5月20日
    00
  • Java全面分析面向对象之多态

    Java全面分析面向对象之多态 什么是多态 多态是面向对象语言中非常重要的一种处理方式。它允许在程序执行时根据实际对象类型选择要调用的方法。多态的实现基于继承、接口和重写。 多态的实现 多态的实现有两种方式: 1.继承 通过继承父类,在子类中重写父类的方法,达到不同类调用同一方法返回不同结果的效果。示例如下: class Animal { void move…

    Java 2023年5月26日
    00
  • 获取Java的MyBatis框架项目中的SqlSession的方法

    获取Java的MyBatis框架项目中的SqlSession对象的方法,可以从以下几个方面进行介绍。 方法一:通过MyBatis提供的SqlSessionFactory创建SqlSession对象 首先,在Java的MyBatis框架项目中,需要首先通过MyBatis提供的SqlSessionFactory创建SqlSession对象。可以通过以下步骤实现:…

    Java 2023年5月20日
    00
  • Java使用JNDI连接数据库的实现方法

    让我为您详细讲解“Java使用JNDI连接数据库的实现方法”的攻略。 1. 概述 Java命名和目录接口(Java Naming and Directory Interface,简称JNDI)是Java平台提供的用于访问各种命名和目录服务的API。通过JNDI API,Java程序可以方便地使用LDAP(轻型目录访问协议)、DNS(域名系统)、NIS(网络信…

    Java 2023年5月19日
    00
  • Android UI设计与开发之实现应用程序只启动一次引导界面

    下面是Android UI设计与开发之实现应用程序只启动一次引导界面的攻略: 步骤一:创建一个启动界面 在你的Android应用程序中,创建一个启动界面,用于判断应用程序当前是否是第一次启动。当应用程序是第一次启动时,这个启动界面将会展示引导页面,否则直接跳转到应用程序主界面。 步骤二:判断是否是第一次启动 在启动界面中加入一些代码,用于判断当前应用程序是否…

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