【springboot整合ActiveMQ】-发送消息到中间件

本文为ActiveMQ中队列模式的生产者

一、导包:

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

        <!--消息队列连接池-->
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
            <version>5.15.0</version>
        </dependency>

 

二、在配置文件中添加连接信息:

spring:
activemq: broker-url: tcp://10.00.100.0:8081 user: XXX password: XXXXX jms: pub-sub-domain: false myqueue: queueName

 

三、生产者Util如下,如果不采用封装成Util的方式的话,可以在实现类中直接使用 @Autowired 注解进行注入,要封装成Util则需要在Util中用构造方法的方式注入JmsMessagingTemplate 和Queue  ,否则会注入不进去

import lombok.extern.slf4j.Slf4j;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Component;
import javax.jms.Queue;
@Slf4j
@Component
public class ActiveMqProducerUtil {

//    @Autowired
//    public JmsTemplate jmsMessagingTemplate;
//    @Autowired
//    public  Queue queue;

    //JmsMessagingTemplate是Springboot的Jms模板,Spring的是JmsTemplate
    private static JmsMessagingTemplate jmsMessagingTemplate;

    //把ConfigBean类的ActiveMQQueue注入进来
    private static Queue queue;

    //构造注入对象
    public ActiveMqProducerUtil(JmsMessagingTemplate jmsMessagingTemplate, Queue queue) {
        ActiveMqProducerUtil.jmsMessagingTemplate = jmsMessagingTemplate;
        ActiveMqProducerUtil.queue = queue;
    }
    public static boolean produceMessage(String messageStr) {
        if (StringUtils.isBlank(messageStr)) {
            log.error(String.format("messageStr:", messageStr));
            return false;
        }
        try {
            jmsMessagingTemplate.convertAndSend(queue, messageStr);
            return true;
        } catch (Exception e) {
            log.error(String.format("messageStr:发布失败", e.getMessage()));
            return false;
        }
    }

}

实体类:

import lombok.Data;
import java.util.Date;

@Data
public class UserVo {
    Date birthday;
    String name;
    String phone;
}

生产者业务部分(直接通过类名调用):

UserVo user= new UserVo();
user.setBirthday(new Date());
user.setName(""张三);
user.setPhone("18945670000");
String userStr = JSON.toJSONString(user);
ActiveMqProducerUtil.produceMessage(userStr);

 

参考链接:SpringBoot整合-Queue - 柒丶月 - 博客园 (cnblogs.com)

posted @ 2022-04-13 10:50  IIIID  阅读(118)  评论(0编辑  收藏  举报