ActiveMQ fileserver功能取消

作者: MisterCH | 来源:发表于2017-01-02 00:17 被阅读631次

目前项目使用的ActiveMQ版本是5.11.1,这个版本中可以使用BlobMessage的方式,用HTTP PUT的方式上传文件到ActiveMQ自带的fileserver中。

这个功能最方便的就是可以直接在生产者中使用BlobMessage来发送文件,ActiveMQ的接口封装了调用该接口的几个步骤:

  1. 将文件用Put方式传到fileserver中
  2. 将文件在MQ fileserver服务器上的地址url放在BlobMessage中
  3. 发送该BlobMessage到MQ

而消费者其实收到的消息并不是文件,而是文件在mq服务器上的地址。消费者可以直接通过getInputStream()方法来得到文件流,而后自己合成文件。这个getInputStream方法其实是http get方法的封装。

所以如果使用了硬件负载均衡如F5来负载均衡mq的客户端连接,很可能导致生产者发送文件消息时带上了F5的地址,从而导致消费者从该地址获取文件时连接到其他MQ。所以客户端需要知道自己连接的哪个MQ,并通过connection.setBlobUploadStrategy()方法来配置文件上传的地址。

现在这些都不用关心了。因为在最新的AMQ的5.14.x及以后版本中,fileserver功能被取消了!

官方通知

fileserver功能取消的原因有两方面,第一是jira上有人反映这个功能不常用(╯‵□′)╯︵┻━┻;第二是这个功能有个漏洞,可以让用户任意上传文件到Mq服务器的任何位置。还有人做了实验,见http://m.weixindou.com/p/4S63O9N31U.html

AMQ 5.12.x和5.13.x未取消该功能,但是需要手工开启。开启配置在conf/jetty.xml中。

fileserver功能的取消带来的影响主要是生产者再也无法通过默认的http协议直接发送带文件的blobmessage了(会报出404错误),而是需要使用ftp协议来发送blobmessage,或自己将文件传到某个服务器上(通过FTP或其他方式),而后将该文件的url放在BlobMessage中再发送这条BlobMessage。消费者的消费不受影响。

真是坑爹,对我来说,要重写接口还要申请生产开大量火墙了。。。。

相关文章

  • ActiveMQ fileserver功能取消

    目前项目使用的ActiveMQ版本是5.11.1,这个版本中可以使用BlobMessage的方式,用HTTP PU...

  • ActiveMQ集群安装

    一、ActiveMQ集群的简单介绍 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统...

  • ActiveMQ HA

    从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增...

  • 用Java实现FTP上传

    为了解决AMQ取消fileserver的问题,今天研究了一下源码,把AMQ里的ftp上传方法提取出来,单独写成一个...

  • Git 分支删除后恢复

    如果本地功能分支删除了,发现远程仓库也没有提交怎么办? 如,当前 FileServer 项目本地分支如下 删除 d...

  • Nginx作为文件服务器

    配置fileserver.conf 查看效果

  • preventDefault()

    取消默认动作,比如 就取消跳转的功能, 就取消提交的功能

  • Go FileServer

    文件服务器 Golang标准库net/http中提供了http.FileServer方法会返回一个使用FileSy...

  • 消息中间件之ActiveMQ学习笔记

    目录 JMS介绍ActiveMQ简介及安装ActiveMQ的实例ActiveMQ配置介绍ActiveMQ的部署模式...

  • spring-java message service

    activeMQ:http://activemq.apache.org/activemq-5152-release...

网友评论

    本文标题:ActiveMQ fileserver功能取消

    本文链接:https://www.haomeiwen.com/subject/gcxwvttx.html