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

Spring整合RabbitMQ详细解读

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

Spring整合RabbitMQ详细解读

Spring整合RabbitMQ的步骤

代码示例骨架

POM.xml文件中的依赖包

生产者模块代码实现

消费者模块代码实现

运行结果


Spring整合RabbitMQ的步骤

使用Spring进行整合,可以使代码变得更加简单,逻辑更加清晰

代码示例骨架

在一个工程中创建了两个模块,一个是生产者一个是消费者,使用Spring整合Rabbit主要使用的就是配置文件XML的形式。

POM.xml文件中的依赖包

    org.springframework
    spring-context 
    5.1.9.RELEASE



    org.springframework.amqp
    spring-rabbit
    2.2.22.RELEASE



    junit
    junit
    4.12
    test



    org.springframework
    spring-test
    5.1.8.RELEASE

生产者模块代码实现

(1)首先我们要配置其连接工厂的信息,使用rabbitmq.properties配置

rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.username=Harmony
rabbitmq.password=888888
rabbitmq.virtual-host=/HarmonyOS

(2)spring-rabbitmq-producer.xml



    

    
    

    
    

    
    

    
    
    
    
    
    
    
    
    
    
    

    
    
        
            
            
        
    
    

    
    
    
    
    

    
    
        
            
            
        
    
    

    
    
    
    
    
    

    
    
        
            
            
            
        
    
    

    
    

(3)生产者各种模式发送消息,我们在测试模块中发送


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-rabbitmq-producer.xml")
public class ProductTest {

    // spring提供的rabbit模板对象
    @Autowired
    private RabbitTemplate rabbitTemplate;

    // 简单模式
    @Test
    public void testHelloWorld() {
        rabbitTemplate.convertAndSend("spring_queue","Hello_World");
    }

    // 发送fanout消息 广播
    @Test
    public void testFanout() {
        rabbitTemplate.convertAndSend("spring_fanout_exchange","","spring fanout...");
    }

    // 发送routing
    @Test
    public void testRouting() {
        rabbitTemplate.convertAndSend("spring_routing_exchange","route2","spring route1...");
    }

    // 发送topics消息
    @Test
    public void testTopics() {
        rabbitTemplate.convertAndSend(
                "spring_topic_exchange",
                "heima.he.ha",
                "spring topic...");
    }
}

Spring 提供 RabbitTemplate 简化发送消息 API

简单使用只要注入 RabbitTemplate对象,用其调用convertAndSend()方法。

消费者模块代码实现

(1)模块间的配置文件不能共用,所以也要配置rabbitmq.properties

rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.username=Harmony
rabbitmq.password=888888
rabbitmq.virtual-host=/HarmonyOS

(2) spring-rabbitmq-consumer.xml



    
    

    
    

    
    
    
    
    
    
    
    

    
        
        
        
        
        
        
        
        
    

(3)实现MessageListener接口,重写onMessage()方法

public class FanoutListener1 implements MessageListener {

    // 回调方法
    @Override
    public void onMessage(Message message) {
        //打印信息
        System.out.println(new String(message.getBody()));
    }
}

创建实现类,实现MessageListener接口,重写onMessage()方法,下述的几个类的写发都和上面一样。

 

 (4)开启测试

在控制台打印内容我们已经在(3)中使用onMessage()方法处理好了,现在只要将这些不同类型的消费者开启监听即可,即可以随意一点,写一个死循环一直监听,直至不需要了终止程序即可!

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-rabbitmq-consumer.xml")
public class ConsumerTest {
    @Test
    public void Test() {
        boolean flag = true;
        while(flag) {
        }
    }
}

运行结果

依次运行生产者中的测试,可以发现有相应的消息被加入了队列中(此时还未启动消费者!)

执行消费者的测试,取出消息,如下,

显然开启后,消息就被全部取出了,Consumers那一列都为1,表示每一个队列都有一个消费者!

 

控制台打印结果

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

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

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