【问题标题】:Testing RabbitMQ and Spring Integration测试 RabbitMQ 和 Spring 集成
【发布时间】:2012-04-22 22:59:31
【问题描述】:

我正在使用 Spring Integration 和 RabbitMq 开发一个应用程序,我想知道如何测试它(集成测试)。

我认为 SoapUI 可能是一个很好的解决方案,但它不支持 RAbbitMq,hermesjms.com 支持 Qpid,所以我认为做一个新插件来支持 Rabbitmq 可能很容易,但它比我想象的要困难得多该项目有点旧,并且有一堆依赖项。 所以我开始考虑自己做一些事情,比如python中的DSL,是这样的:

tests = [{ 'name': 'start',
    'routing_key': 'returned',
    'payload' : "xxxxx",
    'timeOut' : '10000',
    'expected': '',
    'threads': '1'
},
{ 'name': 'second',.....
]

然后用 Pika 执行操作并检查结果。

我知道它非常愚蠢,而且 sopaui 又大又棒,但至少它可以让我做一些小测试。

你会推荐什么?

【问题讨论】:

    标签: spring testing integration rabbitmq


    【解决方案1】:

    RabbitMQ 为您提供 Web 前端(所谓的管理视图 1)。

    那么:您到底想测试什么?比方说,您想验证 requestChannel 上的传入消息到服务并返回,您可以直接 autowire 通道(即 @Autowired 私有通道requestChannel;) 并将消息放入其中。

    但是,只有在您正确设计架构的情况下:流程的每个步骤都可以使用模拟或特殊修改的注入依赖项进行测试。

    除了您自己的组件之外,这些可测试性还适用于弹簧组件(接口)。假设您已经实现了自己的路由器:测试并验证输入和输出。变压器也是如此。

    如果您尝试验证“bic picture”,您将不得不重建完整的场景。但是对于非持久和非持久的队列和消息,这不应该那么复杂。

    你还有什么要测试的吗?

    【讨论】:

    • 您好,感谢您的回答。我想要的是自动检查消息是否在队列中以及那里的内容,我不想测试 rabbimtq。我知道网络插件,但我想自动测试。例如,您向队列 A 发送一条消息并在 B 中等待一条消息,您不仅可以检查该消息是否存在,还可以检查标头和有效负载。还有更多的东西,比如以某种速度发送消息等等
    • 您想“监控”您的消息代理处理吗?哪些消息在“队列”中并且必须等待?
    【解决方案2】:

    对于 rabbitMq,我的建议是使用真正的 RabbiMQ:这可以通过使用 Vagrant with chef 来配置 RabbitMq 和 Vagrant maven 插件以在集成测试之前启动 Box 并在集成测试的后期停止它:

    Vagrant Maven 插件:http://nicoulaj.github.io/vagrant-maven-plugin/

    Vagrant 网站:http://www.vagrantup.com/

    RabbitMQ 食谱厨师:https://github.com/opscode-cookbooks/rabbitmq

    总结一下,你必须:

    1. 安装 Vagrant 并创建一个空 Box(Centos 或 Ubunutu)。
    2. 为 VM 提供 rabbitMQ 食谱。
    3. 将 .box 放入您的主文件夹 (rabbitMQ.box)。
    4. 在集成测试的前期配置您的 maven 项目以使用 vagrant up (~/rabbitMQ.box) 启动 VM。
    5. 配置您的 maven 项目以在集成测试的前期使用 vagrant halt (~/rabbitMQ.box) 停止 VM。

    希望对你有所帮助

    【讨论】:

      【解决方案3】:

      RabbitMQ 现在有一个 HTTP API,所以你可以使用它来代替它的 JMS

      http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v2_8_4/priv/www/api/index.html

      【讨论】:

        猜你喜欢
        • 2015-03-21
        • 1970-01-01
        • 2018-02-08
        • 2015-05-19
        • 1970-01-01
        • 2017-06-28
        • 2015-10-16
        • 2018-11-19
        • 1970-01-01
        相关资源
        最近更新 更多