MQTT Java入门 -Spring Boot 整合 artemis

编程教程 > Java > Spring (1714) 2024-11-26 14:39:04

Spring Boot MQTT协议

通过spring boot整合apache artemis实现Java语言MQTT协议通信,搭建MQTT服务器可以参考上一篇 MQTT Java入门-搭建MQTT服务器

Spring Boot项目创建

创建一个spring boot项目使用最新的spring boot版本
spring boot项目创建
 

添加artemis依赖

maven pom.xml添加以下依赖:

        <!--MQTT-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-artemis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
        </dependency>

编写MQTT消息发布者

import lombok.extern.slf4j.Slf4j;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

/**
 * 消息生产者
 */
@Slf4j
@Service
public class MessageProducerService {

    @Resource
    JmsTemplate jmsTemplate;


    /**
     * 测试 每5秒发送一个消息
     */
    @Scheduled(cron = "0/5 * * * * ?")
    public void sendMessage(){
        Map<String,String> dataMap=new HashMap<>();
        dataMap.put("Hello Artemis","MQTT");
        jmsTemplate.convertAndSend("destinationName1",dataMap);
        log.info("send message success!");
    }

}

用于发布消息到MQTT服务器

编写MQTT消息消费者

import lombok.extern.slf4j.Slf4j;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;

import java.util.Map;

@Slf4j
@Service
public class MessageConsumerService {


    @JmsListener(destination = "destinationName1")
    public void receiveMessage(Map<String,String> dataMap){
        try {
            //等待10秒模拟
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("Receive Message : {}",dataMap.toString());
    }

}

用于模拟接受MQTT协议消息内容

编写MQTT配置文件

[user]

import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;

@Configuration
public class ActiveMQConfig {

    @Value("${spring.activemq.broker-url}")
    private String brokerUrl;

    @Value("${spring.activemq.user}")
    private String user;

    @Value("${spring.activemq.password}")
    private String password;

    @Bean
    public ActiveMQConnectionFactory connectionFactory() {
        return new ActiveMQConnectionFactory(user, password, brokerUrl);
    }

    @Bean
    public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ActiveMQConnectionFactory connectionFactory){
        DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
        bean.setConnectionFactory(connectionFactory);
        return bean;
    }

    @Bean
    public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory){
        DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
        //设置为发布订阅方式, 默认情况下使用的生产消费者方式
        bean.setPubSubDomain(false);
        bean.setConnectionFactory(connectionFactory);
        return bean;
    }

}


[/user]

在启动类注解启动调度任务

@EnableScheduling

启动项目

查看console面板可以看到消息的发送和接受日志
操作示例图-1646881010546.png

通过Apache ActiveMQ Artemis web管理也可以看到消息队列
Apache ActiveMQ Artemis

项目源码下载:项目源码点击下载(访问密码:9987)
 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Spring Boot MQTT协议通过spring boot整合apache artemis实现Java语言MQTT协议通信,搭建MQTT服务器可以参考上一篇 MQTT Java入门-搭建MQ...
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Java编程中Spring Boot整合RabbitMQ实现消息中间件RabbitMQ的使用 1 主要用spring-boot-starter-amqp来整合R
前言    本教程主要讲解spring boot如何整合 spring data elasticsearch 实现elasticsearch检索引擎的整合使用
Spring Boot 2.0 Redis整合,通过spring boot 2.0整合Redis作为spring缓存框架的实现。
spring boot 2.0 security 5.0 整合,实现自定义表单登录。spring boot 2.0框架使用。
spring boot 入门之整合spring session实现session共享。一直以来Java编程中web项目中的session共享问题都是一个很难解决的问题。接下来将讲解通过sprin...
Java编程之Spring Boot通过JMSTemplate 整合ActiveMQ
spring boot mybatis 整合使用讲解介绍,spring boot与MyBatis的使用讲解介绍。spring boot mybatis xml mapper方式的入门和通过一个简...
spring boot 1.5整合redis实现spring的缓存框架,spring boot,redis
spring boot框架整合MyBatis数据库暂时选用MySQL
spring boot 入门之security oauth2 jwt完美整合例子,Java编程中spring boot框架+spring security框架+spring security o...
Java编程中使用spring boot1.5.2框架整合spring data mongodb10.1,来使用mongodb数据库
Spring Boot validation整合hibernate validator实现数据验证,Spring Boot validation使用说明,Spring Boot validat...