开发者社区> 问答> 正文

activeMQ消费者处理完消息后,如何实现页面转跳? 400 报错

activeMQ消费者处理完消息后,如何实现页面转跳? 400 报错

@z_jordon 你好,想跟你请教个问题:

我在controller层把请求数据压入队列,然后在消费者类把请求拿出来,再去发起请求,以此控制并发问题。问题来了,消息经过队列,被消费者类拿出来后,发起请求后,并没有转跳到指定页面,如何实现这个功能,项目架构spring+activeMQ4


 activeMQ消费者处理完消息后,如何通知发送者,实现页面转跳

展开
收起
爱吃鱼的程序员 2020-06-03 16:49:58 548 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    页面轮询处理状态,或许通过websocket之类的######

    说一下我的理解,按照你的描述你好像是要实现这样的功能:

    请求进入controller的某个方法后,把请求数据放入mq,消费者接收这个消息并处理完后,需要controller中的原方法根据mq处理结果实现页面跳转。

    MQ不是这样用的,你的需求只不过是想把业务处理给异步化而已。要么你还是这样用,但是在controller中把数据提交给MQ后,controller就跳页面,也就是说把数据放进mq后,就认为成功了,http响应成功,至于mq消息的处理,那是另外一个过程,不过一般都不会这样用。

    一般为了提高性能,实现读写分离后,读尽量加缓存,写只要能异步化的尽量异步化,不能异步化的就还是同步处理。看你在用spring,spring组织本身就有一个叫reactor(https://github.com/reactor/reactor-spring)的东西,支持异步化,另外像google的guava中也有eventbus能实现异步化,java本身也有Callable、Future机制等。你在controller中就使用activeMQ这种跨进程跨网络的组件肯定是不合适的,并且你还想在同一个http请求中得到mq的执行结果,也不现实。

    ######如果要等待结果,那还不如直接同步处理你的任务,处理完就跳转。######@ 清靜無虞 请教一下,MQ正确使用方法,能说说吗?
    2020-06-03 20:48:41
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
基于RocketMQ Connect 构建全新数据流转处理平 立即下载
为什么 Apache RocektMQ 是业务消息的首选 立即下载
Rocket MQ 使用排查指南 立即下载