栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【ActiveMQ】Spring整合ActiveMQ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【ActiveMQ】Spring整合ActiveMQ

 学习视频 

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

集数:35—38


 学习格言 

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


文章目录
  • 一、配置
    • 1.1 POM.xml
    • 1.2 applicationContext.xml
  • 二、队列 Queue
    • 2.1 生产者
    • 2.2 消费者
  • 三、主题 Topic
    • 3.1 修改配置
    • 3.2 消费者
    • 3.3 生产者
  • 四、配置监听
    • 4.1 监听类
    • 4.2 配置

一、配置 1.1 POM.xml

Maven修改,需要添加Spring支持JMS的包。


    
    
        org.apache.activemq
        activemq-all
        5.15.15
    
    
        org.apache.xbean
        xbean-spring
        3.16
    

    
        com.fasterxml.jackson.core
        jackson-databind
        2.9.5
    

    
    
        org.springframework
        spring-jms
        4.3.23.RELEASE
    
    
    
        org.apache.activemq
        activemq-pool
        5.15.9
    

    
    
        org.springframework
        spring-core
        4.3.23.RELEASE
    
    
        org.springframework
        spring-aop
        4.3.23.RELEASE
    
    
        org.springframework
        spring-orm
        4.3.23.RELEASE
    
    
        org.aspectj
        aspectjrt
        1.6.1
    
    
        aspectj
        aspectjweaver
        1.5.3
    
    
        cglib
        cglib
        2.1_2
    
    
    
        org.slf4j
        slf4j-api
        1.7.25
    
    
        ch.qos.logback
        logback-classic
        1.2.3
    

1.2 applicationContext.xml

Spring配置文件




    
    

    
    
        
            
            
                
            
        
        
    

    
    
        
    
    
    
        
        
        
            
        
    

二、队列 Queue 2.1 生产者
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;

import javax.jms.TextMessage;

@Service
public class SpringMQ_Produce {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        SpringMQ_Produce produce = (SpringMQ_Produce) ctx.getBean("springMQ_Produce");

        // 使用lambda表达式写法
        produce.jmsTemplate.send(session -> {
            TextMessage textMessage = session.createTextMessage("----Spring和ActiveMQ的整合case1-----");
            return textMessage;
        });

        System.out.println("--------------send task over------------------");

    }
}

运行后,ActionMQ前端控制台:

队列的名字时之前在applicationContext.xml中配置的。

2.2 消费者
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;

@Service
public class SpringMQ_Consumer {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        SpringMQ_Consumer consumer = (SpringMQ_Consumer) ctx.getBean("springMQ_Consumer");

        String retValue = (String) consumer.jmsTemplate.receiveAndConvert();

        System.out.println("------消费者收到的消息:" + retValue);
    }
}

控制台输出:

------消费者收到的消息:----Spring和ActiveMQ的整合case1-----

ActionMQ前端控制台:

三、主题 Topic 3.1 修改配置

3.2 消费者

与队列的消费者相同

先启动消费者。

3.3 生产者

与队列的生产者相同

启动生产者后:

四、配置监听

在Spring里实现消费者不启动,直接通过配置监听完成。

4.1 监听类

需要实现MessageListener接口

import org.springframework.stereotype.Component;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

@Component
public class MyMessageListener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        if (message != null && message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            try {
                System.out.println(textMessage.getText());
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}
4.2 配置

在applicationContext.xml内新增:



    
    
    
    

只需要启动生产者,消费者不用启动,自动会监听记录。

运行生产者,消费者就能监听到,控制台就可以获得输出。

--------------send task over------------------
----Spring和ActiveMQ的整合 for case3-----
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397247.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号