【发布时间】:2019-11-23 03:16:50
【问题描述】:
我们正在尝试将旧系统迁移到微服务 在 Paas 环境中,我们有调度程序作业来触发并将消息一一放入 MQ,我们在微服务中有 MQ 侦听器来获取消息并创建请求并将请求发送到外部方。
问题来了,我们的微服务可以对外部服务进行异步调用,但是我们的外部服务无法处理异步调用,所以它返回了错误的数据。 例如,我们使用每分钟 40 到 60 个请求的外部服务,而外部服务每分钟只能处理 6 个请求。
那么如何才能让 MQ 监听器处理缓慢。
我尝试将setMaxConcurrenceConsumer 减少到 1 和
使用observable.toblocking.single() 使进程只在一个线程中运行。
我们在微服务中使用 RxJava。
【问题讨论】:
-
根据描述,请求不应该在外部队列管理器中排队吗?为什么这会导致它返回错误的数据?
-
Mq 只提供正确的数据,但外部服务无法处理异步进程,因此它提供了错误的数据
-
你可能想看看从微服务对你的外部服务进行同步调用的可能性。这样,您对外部服务的调用就会按顺序排列。最好请外部服务的所有者调查并解决问题。
-
感谢@Shashi,我们尝试进行同步调用,但由于事件仅由MQ触发而失败,然后我们也尝试一次只允许一个线程,但仍然如此之快。
标签: java spring jms rx-java ibm-mq