Skip to content

使用JmsTemplate集成ActiveMQ

在Spring Boot中集成ActiveMQ并使用JmsTemplate进行消息发送和接收是一个常见的需求。以下是一个基本的步骤指南和代码示例,帮助你完成这个过程:

1. 添加依赖

首先,在你的pom.xml文件中添加ActiveMQ和Spring JMS的依赖:

xml
<dependencies>
    <!-- Spring Boot Starter for ActiveMQ -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>

    <!-- ActiveMQ Client -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-client</artifactId>
    </dependency>
</dependencies>

2. 配置ActiveMQ

application.propertiesapplication.yml中配置ActiveMQ连接信息:

properties
# application.properties
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin

或者使用YAML格式:

yaml
# application.yml
spring:
  activemq:
    broker-url: tcp://localhost:61616
    user: admin
    password: admin

3. 创建JmsTemplate Bean

在你的配置类中创建一个JmsTemplate bean:

java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;

@Configuration
public class JmsConfig {

    @Bean
    public JmsTemplate jmsTemplate() {
        return new JmsTemplate();
    }
}

4. 发送消息

创建一个服务类来发送消息:

java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;

@Service
public class MessageSender {

    private final JmsTemplate jmsTemplate;

    @Autowired
    public MessageSender(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public void sendMessage(String destination, String message) {
        jmsTemplate.convertAndSend(destination, message);
    }
}

5. 接收消息

为了接收消息,你可以使用@JmsListener注解:

java
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class MessageReceiver {

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

请确保将your.destination替换为你的实际队列或主题名称。

以上就是使用Spring Boot、JmsTemplate和ActiveMQ进行消息传递的基本步骤。根据具体需求,你可能需要进一步配置和调整,比如设置持久化、事务等。