2012-11-30 44 views
2

我有一个Java应用程序正在使用一个JMS队列,进行一些处理,然后发送到输出队列。基于文件系统的JMS代理实现测试

当我测试时,为输出队列建立基于文件系统的JMS实现将非常方便;这样发送给它的任何消息都将被写入磁盘上的一个目录。

有谁知道这是否存在?我曾考虑切换到像Apache-camel这样的基于文件的端点的集成框架,但似乎现在我需要的是过度的。我正在使用activemq,是否可以配置嵌入式代理来执行此操作?

回答

1

我会为apache camel反正。它还为您节省了相当多的样板代码以连接到activemq。如果您还使用spring,只需添加一个简单的routebuilder和一些xml配置即可。罐子本身相当小,因此只需付出相当小的开销即可获得大量的灵活性。

+0

是的,你是对的,这是我最终做的 – BigBen

+0

不错的选择。无论如何,ActiveMQ的标准配置都预先配置了基本的Camel设置。 –

0

我认为这种测试您的jms相关客户端代码的方法可能会变得非常复杂。如果您需要监视应用程序发送的邮件,请考虑使用QueueBrowser。

但是,接收消息的代码必须具有某种副作用(否则它将不会有用)。我会基于这些断言而不是检查消息队列。这应该更容易,并且最有可能导致更好的测试。

+0

我不确定我是否理解你的第二段,你能详细说明一下吗?为了增加更多的颜色,这些消息的消费者目前不可用,并且由公司中的另一个团队提供。 – BigBen

+0

我明白了。如果你想测试单独发送消息的代码(当然这是完全合理的),我会设置一个进程内AMQ代理(通过提供一个连接字符串,比如“vm://测试“到连接工厂)并在您的测试中注册一个用户,它将收到的所有消息放入列表中。然后,运行您的生产者代码并检查发送的消息。因为JMS消息异步运行,所以您可能需要等几分钟才能检查消息。 – mbelow

+0

是的,我已经使用嵌入式代理作为单元测试的一部分,以确保我的消息消耗按预期工作。我的完整的单元测试代码覆盖了我的消息生成代码。我只是想要一个简单的方法让我的系统运行,消费消息,记录度量标准等,但生成文件而不是JMS消息,因此理论上我可以完全准备就绪,只需将切换开关切换到真正的JMS队列准备好了。 – BigBen