【问题标题】:RabbitMQ and Application DecouplingRabbitMQ 与应用解耦
【发布时间】:2017-01-10 23:34:11
【问题描述】:

我需要设置 RabbitMQ 以尝试使用异步消息重新设计我们的架构。

现有应用流程:

  • JEE Web 应用程序(通过浏览器)创建一个新线程。
  • 此线程创建一个新的 OS 进程来调用 Perl 脚本进行一些处理。
  • Perl 脚本将其输出写入文件,然后控制权返回给线程。
  • 线程然后读取输出文件并将结果加载到数据库中。
  • 控制权传递给将结果显示到 UI 的 servlet。

所有这些都是同步且耗时的,我们需要将其转换为异步消息通信。

现在,我计划将其分解为以下不同的组件,但不确定这是否适用于 RabbitMQ:

应用细分:

  • JEE Web 应用程序是 RabbitMQ 的生产者
  • 将 Perl 脚本分离到它自己的支持 RabbitMQ 通信的应用程序中。此 Perl 客户端将使用该消息,对其进行处理并将新消息放入 RabbitMQ 以进行下一步
  • 将数据库加载器的输出文件分离到它自己的支持 RabbitMQ 通信的 Java 应用程序中。这将使用与上一步中 Perl 客户端消息相对应的队列中的消息。

这样,输出将在数据库中可用,异步流程将完成。

  1. 是否可以通过这种方式分离应用程序以兼容 RabbitMQ?
  2. 有没有更好的方法来做到这一点?
  3. 请推荐一些 RabbitMQ 和 Perl 的框架组件

感谢您对此的投入。

【问题讨论】:

    标签: java perl rabbitmq message-queue mom


    【解决方案1】:

    是的,你可以这样做。如果这不是一项艰巨的工作,我将在 Perl 步骤中包含数据库负载。这可能避免处理中间文件,但我不知道这是否是您项目中可行的任务。

    为了使用 RabbitMQ,我向您推荐AnyEvent::RabbitMQ CPAN 模块。如文档所述,您可以使用 AnyEvent::RabbitMQ 来:

    • 声明和删除交易所
    • 声明、删除、绑定和取消绑定队列
    • 设置 QoS 和确认模式
    • 发布、使用、获取、确认、恢复和拒绝消息
    • 选择、提交和回滚事务

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多