栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

06. Spring整合RabbitMQ

06. Spring整合RabbitMQ

06. Spring整合RabbitMQ

五种消息模型,在企业中应用最广泛的就是最后一种:定向匹配topicSpring AMQP 是基于 Spring 框架的AMQP消息解决方案,提供模板化的发送和接收消息的抽象层,提供基于消息驱动的 POJO的消息监听等,简化了我们对于RabbitMQ相关程序的开发 1.生产者工程 1.1 引入依赖



    4.0.0

    com.wh
    spring-rabbitmq-producer
    1.0-SNAPSHOT
    
        
            org.springframework.amqp
            spring-rabbit
            2.0.1.RELEASE
        
        
            org.slf4j
            slf4j-log4j12
            1.7.25
            compile
        
        
            org.apache.commons
            commons-lang3
            3.9
        
    


1.2 配置spring-rabbitmq-producer.xml



    
    
    
    
    
    
    
    
        
            
            
        
    
    
    
    
    

1.3 测试发消息
package test;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.HashMap;
import java.util.Map;


public class Sender {
    public static void main(String[] args){
        //1.创建spring容器
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-rabbitmq-producer.xml");
        //2.从容器中获得rabbit模板对象
        RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class);
        //3.发消息
        Map map = new HashMap();
        map.put("name","魏红");
        map.put("email","2402682949@qq.com");
        rabbitTemplate.convertAndSend("msg.user",map);
        context.close();
    }
}
2.消费端工程 2.1依赖与生产者一致 2.2 spring-rabbitmq-consumer.xml代码


    
    
    
    
    
    
    
    
    
    
        
    

2.2消费者

MessageListener接口用于spring容器接收到消息后处理消息

如果需要使用自己定义的类型 来实现 处理消息时,必须实现该接口,并重写onMessage()方法

当spring容器接收消息后,会自动交由onMessage进行处理

package listener;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;
import org.springframework.stereotype.Component;

import java.io.IOException;


@Component
public class ConsumerListener implements MessageListener {
    //jasckson提供序列化和反序列化中使用哦最多的类,用来转换json的
    public static final ObjectMapper MAPPER = new ObjectMapper();
    @Override
    public void onMessage(Message message) {
        //将message对象转换成json
        try {
            JsonNode jsonNode = MAPPER.readTree(message.getBody());
            String name = jsonNode.get("name").asText();
            String email = jsonNode.get("email").asText();
            System.out.println("从队列中获取:【"+name+"的邮箱是:"+email+"】");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
2.3启动项目
package listener;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;


public class test {
    public static void main(String[] args) throws IOException {
        //获取容器
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/spring-rabbitmq-consumer.xml");
        //让程序一直跑起来,不终止
        System.in.read();


    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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