junit - 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 延迟交换吗?
解决方案
推荐阅读
- android - webview android studio - 输入文件不可点击
- typescript - Working with HTTPS request and async functions to database using TypeScript
- javafx-8 - Custom text cell color in tableview
- php - 当我移动到另一个站点并返回时,Laravel Auth::check() 失败
- uikit - 在 iOS 12 中通过确认自动填充新密码
- reactjs - 来自查询的 React 路由的 If 语句
- node.js - 我可以在 MacOs 服务器中托管我的 angular6 Web 应用程序吗?
- mysql - 如何在 TeamSQL 中编辑或删除特定连接
- python - 向 keras 网络发送多个输入时出错
- c# - TRIPLE DES ECB 加密 RUBY