我想知道在服务器出现故障的情况下是否有办法使消息持久存在?如果客户端发送的消息没有服务器正在运行,它会一直等待响应,并且一旦服务器再次启动它就不会得到任何东西..
有这样的配置:
如果服务器消失,是否有办法在服务器再次启动时恢复进程?重新启动客户端或服务器获取客户端请求一次又重新启动......我怎么能这样做? (“durable = true”参数无法完成此操作...)
完整的示例和代码位于this rpc tutorial。
答案 0 :(得分:1)
当经纪人关闭时,RabbtMQ本身并没有为客户提供自动存储和重发消息的方法。根据{{3}}
...从通道或连接失败中恢复的生产者应重新传输尚未从代理收到确认的任何消息。
您的RabbitMQ客户端框架可能提供类似的功能,例如在服务器关闭时将消息本地存储在磁盘上,或者您可以自己构建它。
另一种选择是设置reliablility documentation以减少代理商中断的可能性。