准备使用jms+activemq做分布式项目,有几个问题求教

jack_jones 发布于 2013/08/29 15:39
阅读 878
收藏 0

准备使用jms+activemq做分布式项目,有几个问题求教

1、比如调用远程的接口作查询操作然后返回结果

    问:用jms实现,请求参数是发送到queue里的,查询结果要怎样返回?

2、项目根据功能模块分布成5台服务器,相互调用接口

    问:5台服务器一共大概100个接口,是不是每个接口有专用queue,要建立100个queue

3、有文件上传需求

    问:用jms实现文件上传合适吗



一共三个问题,求帮助阿

以下是问题补充:

@jack_jones:4、接收端从queue里取消息,是一个一个按顺序执行吗?效率会不会太低了 (2013/08/29 16:42)
加载中
0
震秦
震秦

你真是想要了activemq的命. 你说的所有需求都不好实现. 

首先JMS都是异步的, 你把请求放进去, 你不知道结果啥时候完成, 你不知道这个结果是不是你的. 这样结果拿回来会错乱.

另外jms上传文件我都没听过.

这货就是一个消息服务. Text,Map,Object类型的消息.

0
王瑞平
王瑞平
上传文件用这个咋整?
0
winnie_tour
winnie_tour
首先lz你要明确消息队列到底适用于哪些场景:我的理解是解耦一些非关键性的操作(或者说及时性要求相对不高的),首先回答第二个问题,上传图片不是不可能用队列来做,传进去的都是二进制的字节流嘛,当然也可以接收并写入到图片文件中来保存,但是这样一来,用户上传完图片很可能不能马上返回结果,所以说这不适用与图片上传。第二个问题:也可以不用100个queue,只要你在消息中加入可识别的标识就可以了,比如一个自定义消息类型,这样接收端就能分清楚到底接收的是什么类型的消息该如何处理。第一个问题:发送端源源不断的将要处理的任务调用发送接口传输到队列中,同样也需要有个接收任务的hanlder也是远远不到的在处理队列中的任务,lz要用mq就已经确定这是异步的操作,所以就不要在用同步的思想来思考问题了。
0
拖鞋莫止步
拖鞋莫止步
这种需求应该是wevservice的范畴。非异步,可以稳定发送大字节的序列化数据。建议了解下webservice是否能够替代jms。jms是消息服务,用来处理多个服务器直接的一些消息互通。并不适合做数据传输。
0
daxiaoming
daxiaoming

我已经基于 activemq 使用 camel 编写了一个小型 RPC 系统:三端(A, B, C),五个命令种类,40多个具体的命令。

1. 可以在调用的时候生成UUID,然后使用 callback 方法根据此 UUID 来进行处理。

2. 将接口方法归类细分,可以减少 queue 数量,便于调试维护。

3. 不合适。MQ本身就是为了传递大量小数据(<32K?)而设计的。

4. 同一队列是按顺序接收的,但是效率方面不用担心,比 webservice 快。

daxiaoming
daxiaoming
回复 @路灯下的大怪兽 : 不一定要用Spring,看项目的其他需求。用 Spring 的话,把配置抽出来当作字段(例如MQ的地址和队列名字等),然后在 Spring 配置文件里面用 <property/> 注入就行了。
路灯下的大怪兽
路灯下的大怪兽
回复 @daxiaoming : 谢谢,我现在也是这么做的。网上类似资料比较少,还以为一个队列一个监听会不合理。消费队列信息能有哪些地方可以优化的。多队列的话还需要跟Spring整合么,感觉单独灵活多了,spring不知道怎么配置,怎么读取队列了
daxiaoming
daxiaoming
回复 @路灯下的大怪兽 : 每个 listener 只监听一个队列,你多建几个就行
路灯下的大怪兽
路灯下的大怪兽
你好。我问下 点对点传输的话。怎么监听收取多队列信息
0
开源技术哪家强
开源技术哪家强

楼主想说的是rmi 不是jms吧?

返回顶部
顶部