模拟消息队列

时间:2014-10-26 23:24:10

标签: mocking jms message-queue

我的应用程序使用大量的消息队列连接,这使我很难在本地运行我的环境。目前,我只是简单地连接到DEV或TEST环境,当这些环境出现问题时,这可能会有问题。

我可以通过哪些方法为本地开发构建虚假邮件队列服务?我想有一些以下功能:

  • 处理来自多个进程的并发读/写
  • 可靠的消息消耗(通过可见性超时)
  • 保证最多一次交付

这可能吗?

我考虑过的事情包括: - 构建模拟JMS服务并将其部署到某个地方(或在VM中运行) - 实现模拟服务,该服务根据传入消息返回不同的响应

还有别的吗?

1 个答案:

答案 0 :(得分:2)

您可以在unit tests中使用嵌入式ActiveMQ Broker之类的东西来测试应用程序各个部分的行为。

创建嵌入式代理非常简单,您可以根据测试的内容等调整不同测试的配置。

@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();
}