activeMQ消费者处理完消息后,如何实现页面转跳
@z_jordon 你好,想跟你请教个问题:
我在controller层把请求数据压入队列,然后在消费者类把请求拿出来,再去发起请求,以此控制并发问题。问题来了,消息经过队列,被消费者类拿出来后,发起请求后,并没有转跳到指定页面,如何实现这个功能,项目架构spring+activeMQ4
activeMQ消费者处理完消息后,如何通知发送者,实现页面转跳
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
@
清靜無虞 请教一下,MQ正确使用方法,能说说吗?
如果要等待结果,那还不如直接同步处理你的任务,处理完就跳转。
说一下我的理解,按照你的描述你好像是要实现这样的功能:
请求进入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的执行结果,也不现实。
页面轮询处理状态,或许通过websocket之类的