我通过实现MessageListener接口并设置SimpleMessageListenerContainer来编写RabbitMQ使用者.当我手动测试时,它运行良好.现在我想编写一个集成测试:
但是,由于我的MessageListener在一个单独的线程中运行,因此难以进行单元测试.在我的测试中使用Thread.sleep来等待MessageListener是不可靠的,我需要某种阻塞方法.
是否设置了响应队列并使用rabbitTemplate.convertSendAndReceive我唯一的选项?我想避免设置响应队列,因为它们不会在真实系统中使用.
有没有办法只使用rabbitTemplate.convertAndSend然后以某种方式等待我的MessageListener接收消息并处理它?理想情况下,我会想象这样的事情:
rabbitTemplate.convertAndSend("routing.key", testObject);
waitForListner() // Somehow wait for my MessageListener consume the message
assertTrue(...)
assertTrue(...)
Run Code Online (Sandbox Code Playgroud)
我知道我可以直接将消息传递给我的MessageListener而根本不连接到RabbitMQ,但我希望能够测试整个系统是否可以这样做.如果没有办法以合理清洁的方式实现我的目标,我计划回归到那个解决方案.
在 Expo + React Native 项目中包装第 3 方本机库(android 和 ios)并将其暴露给 Javascript 的“正确方法”是什么?最好的追求路线是什么?有什么我应该学习的综合例子吗?
以下是我尝试在不涉及任何第三方依赖项的情况下执行简单本机代码的一些操作:
由于我想使用世博会,因此第三个选项对我来说似乎是一个不错的选择。但现在我对如何真正引入我想要使用的第三方库感到困惑。例如,有awesome-module/ios一个AwesomeModule.podspec文件,但没有Podfile要添加依赖项的文件。我应该添加一个Podfile吗?我应该添加对 AwesomeApp 的依赖吗Podfile?我采取了错误的方法吗?我应该重新关注 React Native 模块吗?
到目前为止我使用过的资源:
npx create-expo-module AwesomeModule