RabbitMQ与应用解耦



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

现有应用程序流:

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

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

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

应用程序崩溃:

  • JEE Web应用程序,它是RabbitMQ的生产者
  • 将Perl脚本分离到支持RabbitMQ通信的应用程序中。这个Perl客户端将使用这个消息,处理它,并在RabbitMQ中放置一个新的消息,用于下一步
  • 将数据库加载器的输出文件分离到支持RabbitMQ通信的Java应用程序中。这将使用与前一步Perl客户机的消息相对应的队列中的消息。

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

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

感谢您的参与。

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

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

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

相关内容

  • 没有找到相关文章

最新更新