如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有 ActiveMQ,RabbitMQ,kafka。

大家好,欢迎来到IT知识分享网。

推荐学习

  • 消息中间件合集:MQ(ActiveMQ/RabbitMQ/RocketMQ)+Kafka+笔记
  • Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC
如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

一、ActiveMQ 介绍

MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有 ActiveMQ,RabbitMQ,kafka。ActiveMQ 是 Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。

特点:

(1)支持多种语言编写客户端
(2)对spring的支持,很容易和spring整合
(3)支持多种传输协议:TCP,SSL,NIO,UDP等
(4)支持AJAX

消息形式:

(1)点对点(queue)
(2)一对多(topic)

二、ActiveMQ 安装

首先下载需要的 ActiveMQ:https://activemq.apache.org/activemq-5120-release

然后上传到 Linux 中解压:这里需要确保 linux 中已经装好了 jdk

如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]


由于我这里的 jdk 是1.7 的版本所以我下载的 activemq 是5.12.0
解压:tar -zxvf apache-activemq-5.12.0-bin.tar.gz
然后进入解压的目录启动即可:./bin/activemq start

如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

登录验证,注意需要登录:192.168.245.129:8161/admin,用户名和密码均为:admin

如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

不然直接访问会出错:http://192.168.245.129:8161/

如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

三、SpringBoot 整合 ActiveMQ

1. 加入依赖配置

如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

2. 配置 application.properties

# 8161 是管理界面的端口,61616 是通信的端口spring.activemq.broker-url=tcp://192.168.245.129:61616#发送的消息可以是个普通的字符串也可以是个对象,如果是对象则需要设置trust-all 为truespring.activemq.packages.trust-all=truespring.activemq.user=adminspring.activemq.password=admin

IT知识分享网

3. 配置队列

这里由于就一个 Bean,所以在 启动类中对其进行了配置:

IT知识分享网package org.yolo.activemq;

import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.jms.Queue;

@SpringBootApplication
public class ActivemqApplication {

    public static void main(String[] args) {
        SpringApplication.run(ActivemqApplication.class, args);
    }
    @Bean
    Queue queue() {
        return new ActiveMQQueue("hello.Yolo");
    }
}

4. 配置 Message 对象

public class Message implements Serializable {
    private String content;
    private Date sendDate;

    public String getContent() {
        return content;
    }

    @Override
    public String toString() {
        return "Message{" +
                "content='" + content + '\'' +
                ", sendDate=" + sendDate +
                '}';
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getSendDate() {
        return sendDate;
    }

    public void setSendDate(Date sendDate) {
        this.sendDate = sendDate;
    }
}

5. 配置 JmsComponent

实现消息的接收和发送

IT知识分享网package org.yolo.activemq;

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

@Component
public class JmsComponent {
    //引入自动化配置之后,定义好的一个JMS发送消息的模板
    @Autowired
    JmsMessagingTemplate jmsMessagingTemplate;
    @Autowired
    Queue queue;

    /**
     * 发送消息
     * @param message
     */
    public void send(Message message) {
        jmsMessagingTemplate.convertAndSend(this.queue, message);
    }

    /**
     * 消费者,接收消息
     * @param msg
     */
    @JmsListener(destination = "hello.Yolo")//destination 表示刚才定义的消息队列的名字
    public void receive(Message msg) {
        System.out.println(msg);
    }
}

6. 测试

@SpringBootTest
class ActivemqApplicationTests {

    @Autowired
    JmsComponent jmsComponent;

    @Test
    public void contextLoads() {
        Message message = new Message();
        message.setContent("hello Yolo!");
        message.setSendDate(new Date());
        jmsComponent.send(message);
    }
}
如何使用SpringBoot整合ActiveMQ?我教你[通俗易懂]

作者:南淮北安

原文链接:https://blog.csdn.net/nanhuaibeian/article/details/108939567

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/7057.html

(0)
上一篇 2023-01-03 09:53
下一篇 2023-01-03 09:53

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信