这个数据采集到后,要实时或者定时给合作伙伴的程序
这句话很关键,决定了数据的方向是你给对方的。ok,我只能给一个思路先确定消息的方式/类型
如果一个数据只有一个消费者,也就是只有你合作伙伴的一个程序使用一次,那么可以使用Queue 队列模式
如果一个数据,有多个使用者,比如好几个地方都用得着这个数据,那就得用Topic模式,发布订阅模式了OK
1 首先你得有一个JMS的服务器啦,这个你自己找吧,weblogic/ibm/apache都有这方面的产品
2 创建一个Queue或者Topic
3 你的程序作为信息生产者身份,向服务器的指定目标发送约定格式的数据,比如xml格式
4 你合作伙伴则以信息消费者/使用者的身份,从服务器获取数据。基本流程就是这么多。有一个细节。消费者获取数据一般有2种方法,主动和被动。
主动就是消费者每隔一段时间,主动查询是否有数据,然后断开连接。
被动则是注册好之后,进入wait状态,连接不断开,有数据的时候服务器会反调回来的。如果数据对实时性要求比较高,比如这面有了数据,必须尽快在那面有反应,建议用被动方式。 否则主动更省资源。
这句话很关键,决定了数据的方向是你给对方的。ok,我只能给一个思路先确定消息的方式/类型
如果一个数据只有一个消费者,也就是只有你合作伙伴的一个程序使用一次,那么可以使用Queue 队列模式
如果一个数据,有多个使用者,比如好几个地方都用得着这个数据,那就得用Topic模式,发布订阅模式了OK
1 首先你得有一个JMS的服务器啦,这个你自己找吧,weblogic/ibm/apache都有这方面的产品
2 创建一个Queue或者Topic
3 你的程序作为信息生产者身份,向服务器的指定目标发送约定格式的数据,比如xml格式
4 你合作伙伴则以信息消费者/使用者的身份,从服务器获取数据。基本流程就是这么多。有一个细节。消费者获取数据一般有2种方法,主动和被动。
主动就是消费者每隔一段时间,主动查询是否有数据,然后断开连接。
被动则是注册好之后,进入wait状态,连接不断开,有数据的时候服务器会反调回来的。如果数据对实时性要求比较高,比如这面有了数据,必须尽快在那面有反应,建议用被动方式。 否则主动更省资源。
解决方案 »
- ajax提交请求后,action不能实例化
- 使用webservice实现文件的上传时遇到的问题
- 使用Spring Security3遇到的问题!(100分)
- 工作中hibernate用表反射生成映射文件那注解怎么办????
- 我用MyEclipse在tomcat下的一个web里用了Logging 它记录的错误日志文件放在哪里
- JBOSS4.2中布署2个EJB3有问题
- 计算到2个时间之间间隔的工作日
- 简单问题高分相送,都进来看看啊:)
- 转 请大家讨论一下,现在我们开发J2EE的Application Server还有没有机会,这里有没有这种人才? (愿意给300分)
- 求助如何可恢复地中断线程
- 高分,求助Web项目中Hibernate异常
- Hibernate存储图像数据出错
这种类似于串行,你拿不到反馈就不继续处理。还有,你的生产和消费可以在2个线程里面进行,1个线程专门生产,另一个专门消费,读取反馈
这种类似于并行。推荐并行方式,除非你必须要求每个数据都要求反馈,否则不能继续处理数据的情况。 这个需要你根据实际情况进行确定了。
继续,我们来讨论数据的处理方式了,因为不在只有单一个生产和消费者了。
消息可以在一个队列里面,也可以在2个里面进行。如果是2个队列,程序编写简单,你向队列1里面写,从队列2里面读, 对方从队列1里面读,向队列2里面写。 各自分开。
推荐这种。也可以是1个队列,这样的话,你的消息就得附加信息了,就不仅仅只有消息内容,还得有消息的方向信息。
生产者将信息目的设置为对方,消费者看到有消息时,需要设置匹配功能,对于符合匹配条件的,方向是向自己的,进行消费,否则不处理。
不推荐这样做,虽然节省一个队列,但是操作复杂,容易出错。
最后,关于消息的内容,因为涉及到需要标识你的回复是回复哪一个的,一个命令的唯一编号需要放在信息里面,也就是xml里面。
消费者拿到反馈信息,需要判断是否为一个反馈信息,还是对方给的一个命令,是哪个命令,这些都要实现在协议里面协商好,并落实在文档里。
OVER
如果语言方面双方不一致呢?比如我们使用JAVA,他们是VC或者delphi,或者是C#,这些情况你的做法可以做到吗?