使用 rabbitmq 进行的 8 小时 RPC 调用。这听起来很疯狂,但有啥问题吗?

Posted

技术标签:

【中文标题】使用 rabbitmq 进行的 8 小时 RPC 调用。这听起来很疯狂,但有啥问题吗?【英文标题】:An 8 hour RPC call using rabbitmq. It sounds crazy but is there anything wrong with it?使用 rabbitmq 进行的 8 小时 RPC 调用。这听起来很疯狂,但有什么问题吗? 【发布时间】:2014-12-04 20:43:42 【问题描述】:

我正在使用 jruby 和 java 的 com.rabbitmq.client 通过 rabbitmq 对工作进程进行 rpc 调用。通话最多可能需要 8 小时才能完成。使用 RPC 似乎是错误的,但由于它基本上只是一个 pub/sub,我想知道这是否真的是一个合理的做法。

【问题讨论】:

【参考方案1】:

我假设您正在使用独占的回复/回调队列。这种方法的唯一问题是,如果生产者宕机,队列就会消失,响应也会丢失。更好的方法可能是使用数据库来记录作业的状态/响应,并在作业的状态更改时触发事件,相关方可能会订阅这些事件。对于如此长时间运行的工作,我通常会避免以任何方式进行耦合。

【讨论】:

以上是关于使用 rabbitmq 进行的 8 小时 RPC 调用。这听起来很疯狂,但有啥问题吗?的主要内容,如果未能解决你的问题,请参考以下文章

Python操作rabbitmq系列:进行RPC调用

RabbitMQ 远程过程调用(RPC)

RabbitMQ中文文档PHP版本--远程过程调用(RPC)

Python开发项目:RPC异步执行命令(RabbitMQ双向通信)

基于RabbitMQ RPC实现的主机异步管理

Python-RabbitMQ消息队列实现rpc