【ActiveMQ】SpringBoot整合ActiveMQ

20 篇文章 0 订阅
11 篇文章 2 订阅

🔰 学习视频 🔰

尚硅谷ActiveMQ教程(MQ消息中间件快速入门)

集数:39—43


🔰 学习格言 🔰

练拳不练功,到老一场空;基础不牢,地动山摇。


一、队列生产者

步骤1:创建Springboot工程,版本选择2.1.5.RELEASE。(跟着老师的版本不出错)

步骤2:配置pom.xml,新增activemq整合依赖。

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

步骤3:配置application.yml

server:
  port: 8081

spring:
  activemq:
    broker-url: tcp://192.168.150.101:61616         # 用自己MQ服务器地址,用自己的
    user: admin
    password: admin
  jms:
    pub-sub-domain: false                 # false = Queue    true = Topic

# 定义队列名称
myqueue: boot-activemq-queue

步骤4:创建配置类

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.stereotype.Component;

import javax.jms.Queue;

@Component
@EnableJms
public class ConfigBean {

    @Value("${myqueue}")
    private String myQueue;

    @Bean  // 相当于 <bean id="" class="">
    public Queue queue() {
        return new ActiveMQQueue(myQueue);
    }
}

步骤5:生产者QueueProduce

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;

import javax.jms.Queue;
import java.util.UUID;

@Component
public class QueueProduce {

    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private Queue queue;

    public void produceMsg() {
        jmsMessagingTemplate.convertAndSend(queue, "*****: " + UUID.randomUUID().toString().substring(0,6));
    }
}

步骤6:主启动类MainAppProduce

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainAppProduce {
    public static void main(String[] args) {
        SpringApplication.run(MainAppProduce.class, args);
    }
}

步骤7:单元测试

SpringBoot 2.2.X之前使用:import org.junit.Test
SpringBoot 2.2.X之后使用:import org.junit.jupiter.api.Test

import com.example.springboot.produce.QueueProduce;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import javax.annotation.Resource;

@SpringBootTest(classes = MainAppProduce.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestActiveMQ {

    @Resource
    private QueueProduce queueProduce;

    @Test
    public void testSend() throws Exception {
        queueProduce.produceMsg();
    }
}

Springboot程序运行成功:
在这里插入图片描述

步骤8:间隔定投

要求每隔3秒钟往MQ推送消息,定时发送case。

修改QueueProduce

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.jms.Queue;
import java.util.UUID;

@Component
public class QueueProduce {

    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private Queue queue;

    public void produceMsg() {
        jmsMessagingTemplate.convertAndSend(queue, "*****: " + UUID.randomUUID().toString().substring(0,6));
    }

    // 间隔定投,3s
    @Scheduled(fixedDelay = 3000)
    public void produceMsgScheduled() {
        jmsMessagingTemplate.convertAndSend(queue, "*****Scheduled: " + UUID.randomUUID().toString().substring(0,6));
        System.out.println("******* produceMsgScheduled send ok");
    }
}

修改主启动类MainAppProduce

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class MainAppProduce {
    public static void main(String[] args) {
        SpringApplication.run(MainAppProduce.class, args);
    }
}

启动主启动类,间隔发送消息。

idea控制台打印:
在这里插入图片描述

二、队列消费者

步骤1:创建Springboot工程,版本选择2.1.5.RELEASE。

步骤2:配置pom.xml,新增activemq整合依赖。

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

步骤3:配置application.yml

server:
  port: 8082

spring:
  activemq:
    broker-url: tcp://192.168.150.101:61616         # 用自己MQ服务器地址,用自己的
    user: admin
    password: admin
  jms:
    pub-sub-domain: false                 # false = Queue    true = Topic

# 定义队列名称
myqueue: boot-activemq-queue

步骤4:消费者QueueConsumer

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

import javax.jms.JMSException;
import javax.jms.TextMessage;

@Component
public class QueueConsumer {

    @JmsListener(destination = "${myqueue}")
    public void receive(TextMessage textMessage) throws JMSException {
        System.out.println("**********消费者收到消息:" + textMessage.getText());
    }
}

步骤5:主启动类MainAppConsumer

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainAppConsumer {
    public static void main(String[] args) {
        SpringApplication.run(MainAppConsumer.class, args);
    }
}

启动成功后,收到之前生产者发送的消息:
在这里插入图片描述

三、主题生产者

步骤1:新建SpringBoot项目,同上。

步骤2:配置pom.xml,同上。

步骤3:配置application.yml

server:
  port: 8003

spring:
  activemq:
    broker-url: tcp://192.168.150.101:61616         # 用自己MQ服务器地址,用自己的
    user: admin
    password: admin
  jms:
    pub-sub-domain: true                 # false = Queue    true = Topic

# 定义主题名称
myTopic: boot-activemq-topic

步骤4:创建配置类

import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.stereotype.Component;

import javax.jms.Topic;

@Component
@EnableJms
public class ConfigBean {

    @Value("${myTopic}")
    private String topicName;

    @Bean  // 相当于 <bean id="" class="">
    public Topic topic() {
        return new ActiveMQTopic(topicName);
    }
}

步骤5:生产者TopicProduce

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.jms.Topic;
import java.util.UUID;

@Component
public class TopicProduce {

    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private Topic topic;

    public void produceMsg() {
        jmsMessagingTemplate.convertAndSend(topic, "主题消息: " + UUID.randomUUID().toString().substring(0,6));
    }

    // 间隔定投,3s
    @Scheduled(fixedDelay = 3000)
    public void produceMsgScheduled() {
        jmsMessagingTemplate.convertAndSend(topic, "主题消息 Scheduled: " + UUID.randomUUID().toString().substring(0,6));
        System.out.println("******* produceMsgScheduled send ok");
    }
}

步骤6:主启动类MainAppProduce

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class MainAppProduce {
    public static void main(String[] args) {
        SpringApplication.run(MainAppProduce.class, args);
    }
}

四、主题消费者

步骤1:创建Springboot工程,同上

步骤2:配置pom.xml,同上。

步骤3:配置application.yml

server:
  port: 8001

spring:
  activemq:
    broker-url: tcp://192.168.150.101:61616         # 用自己MQ服务器地址,用自己的
    user: admin
    password: admin
  jms:
    pub-sub-domain: true                 # false = Queue    true = Topic

# 定义队列名称
myTopic: boot-activemq-topic

步骤4:消费者TopicConsumer

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

import javax.jms.JMSException;
import javax.jms.TextMessage;

@Component
public class TopicConsumer {

    @JmsListener(destination = "${myTopic}")
    public void receive(TextMessage textMessage) throws JMSException {
        System.out.println("**********消费者收到消息:" + textMessage.getText());
    }
}

步骤5:主启动类MainAppConsumer

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApp8001 {
    public static void main(String[] args) {
        SpringApplication.run(MainApp8001.class, args);
    }
}

修改端口号为8002,启动第二个微服务。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApp8002 {
    public static void main(String[] args) {
        SpringApplication.run(MainApp8001.class, args);
    }
}

此时有两个消费者:
在这里插入图片描述
步骤6:启动主题生产者

生产者:
在这里插入图片描述
消费者(8001与8002相同):
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将ActiveMQ与Spring Boot整合,需要进行以下步骤: 1. 首先,在项目的pom.xml文件中添加ActiveMQ和Spring Boot的整合依赖。引用 2. 安装并启动ActiveMQ。在本地下载好ActiveMQ,并进入其bin目录,执行./activemq start命令来启动ActiveMQ。确保本地已经安装了可用的JRE环境。 3. 访问ActiveMQ的管理端界面来验证ActiveMQ是否正常工作。在浏览器中输入localhost:8161,初始的用户名和密码都为admin。通过管理端界面,你可以创建队列、管理消息等操作。 4. 在Spring Boot项目中实现消息队列的生产和消费功能。你可以使用Spring Boot提供的注解和配置来实现ActiveMQ的集成。具体的实现细节可以参考Spring Boot官方文档或者其他相关教程。 通过以上步骤,你就可以成功地将ActiveMQ与Spring Boot进行整合,实现消息队列的生产和消费功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot整合ActiveMq](https://blog.csdn.net/qq_35220073/article/details/131139177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SpringBoot 整合实现ActiveMQ](https://blog.csdn.net/qq_26383975/article/details/124943780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

望天边星宿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值