【问题标题】:Mocking out a message queue模拟消息队列
【发布时间】:2014-12-22 03:13:32
【问题描述】:
我的应用程序使用了大量的消息队列连接,这让我很难在本地运行我的环境。目前,我只是连接到 DEV 或 TEST 环境,当这些环境中出现问题时可能会出现问题。
有哪些方法可以为本地开发构建虚假消息队列服务?我想拥有以下一些功能:
- 处理来自多个进程的并发读/写
- 可靠的消息消费(通过可见性超时)
- 保证最多一次交付
这可能吗?
我考虑过的事情包括:
- 构建一个模拟 JMS 服务并将其部署在某个地方(或在 VM 中运行它)
- 实现一个模拟服务,根据传入的消息返回不同的响应
还有什么?
【问题讨论】:
标签:
mocking
jms
message-queue
【解决方案1】:
您可以在 unit tests 中使用嵌入式 ActiveMQ 代理之类的东西来测试应用程序各个部分的行为。
创建嵌入式代理非常简单,您可以根据要测试的内容等调整不同测试的配置。
@Before
public void startBroker() throws Exception {
brokerService = new BrokerService();
brokerService.setPersistent(false);
brokerService.setUseJmx(false);
brokerService.addConnector("tcp://localhost:0");
brokerService.start();
brokerService.waitUntilStarted();
brokerURI = brokerService.getTransportConnectorByScheme("tcp").getPublishableConnectString();
}