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

RabbitMQ提高消息投递可靠性

RabbitMQ提高消息投递可靠性

RabbitMQ提供了两种方式类控制消息投递的可靠性模式 1、Confirm —确认模式(/confirm/iCallback) 2、Return —回退模式(ReturnCallback) rabbitMQ整个消息投递流程:(这两种方式即可保证消息投递可靠性)

Spring.xml中的配置:

 
    
    
    

    
    

    
        
            
        
    

测试代码:

package com.study;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;



//@RunWith ---就是一个运行器 SpringJUnit4ClassRunner.class 让测试运行于Spring测试环境,以便在测试开始的时候自动创建Spring的应用上下文
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration ---注解引入配置文件
@ContextConfiguration(locations = "classpath:spring-rabbitmq-producer.xml")
public class ProducerTest2 {

    //1.注入RabbitTemplate
    @Autowired
    private RabbitTemplate rabbitTemplate;


    

    @Test
    public void testConfirm(){

        //2、定义回调函数
        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {
            
            @Override
            public void confirm(CorrelationData correlationData, boolean b, String s) {
                System.out.println("/confirm/i方法被执行了。。。");
                if(b){
                    //接收成功
                    System.out.println("接收成功"+s);
                }else{
                    //接收失败
                    System.out.println("接收失败"+s);
                }
            }
        });
        //3、发送消息
        rabbitTemplate.convertAndSend("spring_exchange_/confirm/i","/confirm/i1","massage /confirm/i...");

    }


    
    @Test
    public void testReturn(){

        //设置交换机处理失败消息的模式
        rabbitTemplate.setMandatory(true);

        //2.设置ReturnCallBack
        rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
            @Override
            public void returnedMessage(Message message, int i, String s, String s1, String s2) {
                System.out.println("ReturnCallback被执行了....");
                System.out.println(message);
                //处理

            }
        });


        //3、发送消息
        rabbitTemplate.convertAndSend("spring_exchange_/confirm/i","/confirm/i1","massage /confirm/i...");

    }



}

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

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

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