首页 > 解决方案 > Junit测试后如何回滚Rabbit-mq消息?

问题描述

当你测试你的代码时,你会向 rabbit-mq 发送一条消息。测试结束后如何回复消息?

public interface RabbitProducer {
    String OUTPUT = "rabbitmq_producer_channel";

    @Output(OUTPUT)
    MessageChannel output();
}

public class SysGroupServiceImpl {

    @Autowired
    private RabbitProducer rabbitProducer;

    @Override
    public Result remove(Collection<? extends Serializable> idList) {
        rabbitProducer.output().send(MessageBuilder.withPayload(idList)
                .setHeader("x-delay", 5000)
                .setHeader("MessageType", "GroupBatchDelete").build());
        return Result.booleanResult(true);
    }
}

@SpringBootTest
@Transactional
@Rollback
public class SysGroupServiceTest {
    @Autowired
    private SysGroupService sysGroupService;
    @Test
    void removeTest(){
      sysGroupService.remove(Stream.of("1").collect(Collectors.toList()));
    }
}

我使用Spring Cloud Stream来兼容RabbitMQ,所有相关代码都在那里。有没有办法模拟出来?我尝试了以下方案,但是由于X-dealy,我得到了这个错误:没有交换类型x -延迟消息

    <dependency>
        <groupId>com.github.fridujo</groupId>
        <artifactId>rabbitmq-mock</artifactId>
    </dependency>

@Component
public class RabbitMqMock {
    @Bean
    public ConnectionFactory connectionFactory() {
        return new CachingConnectionFactory(MockConnectionFactoryFactory.build());
    }
}

我对模拟知之甚少。模拟可以创建 X 延迟交换吗?

标签: junitrabbitmq

解决方案


推荐阅读