java - 有没有办法用 Spring 将 REST 调用排队?

标签 java rest queue spring-rest spring-retry

我正在开发一个项目,该项目正在对另一个服务进行 REST 调用以将数据保存在数据库上。数据非常重要,因此我们不能失去任何东西。

如果网络出现问题,此消息将会丢失,但这是不可能发生的。我已经搜索过 Spring Retry,发现它是为了处理临时网络故障而设计的,这不是我所需要的。

我需要一种方法将 REST 调用放入某种队列(如 Active MQ)中并保留顺序(这非常重要,因为我收到保存、删除和更新 REST 调用。)

有什么想法吗?谢谢。

最佳答案

如果不需要独立安装 ActiveMQ,您可以使用嵌入式内存代理。 http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

不确定是否可以配置内存代理以使用 KahaDB。当然,持久性的范围将仅限于您的应用程序进程,即如果应用程序重新启动,队列中的消息将不可用。这可能是基于内存或普通代码的方法不好的最重要原因。

如果您必须重新发明轮子,那么请看一下这个主题,其中讨论了使用 Executors 和 BlockingQueue 来实现您自己的伪 MQ。 Producer/Consumer threads using a Queue .

顺便说一句,重试机制不是 MQ 代理提供的。实现它的是客户端。无论是 ActiveMQ 捆绑的客户端库还是其他消息传递库(例如 Camel)。

您还可以回顾当前的技术堆栈,看看现有组件是否具有 JMS 功能。例如:Oracle数据库捆绑了一个名为Oracle AQ的MQ

关于java - 有没有办法用 Spring 将 REST 调用排队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549378/

相关文章:

c - Malloc 的段错误

java - java中的最大堆空间限制

java - 为什么这不转换所有实例?

api - RESTful API : How to model 'request new password' ?

javascript - 带有 jQ​​uery AJAX 的 WCF REST - 删除/解决同源策略

javascript - 使用 RxJS 对发出的值进行排队,就像可以使用 p-queue 一样

java - 使用 java 比较器但具有固定值的对象排序应该在排序列表中的最后一个值中

Java 线程 sleep 和中断异常

java - Apache oltu Oauth2 token 验证

php - 如何在 PHP 中为 future 的发布日期安排/排队内容?