这个数据采集到后,要实时或者定时给合作伙伴的程序
这句话很关键,决定了数据的方向是你给对方的。ok,我只能给一个思路先确定消息的方式/类型
如果一个数据只有一个消费者,也就是只有你合作伙伴的一个程序使用一次,那么可以使用Queue 队列模式
如果一个数据,有多个使用者,比如好几个地方都用得着这个数据,那就得用Topic模式,发布订阅模式了OK
1 首先你得有一个JMS的服务器啦,这个你自己找吧,weblogic/ibm/apache都有这方面的产品
2 创建一个Queue或者Topic
3 你的程序作为信息生产者身份,向服务器的指定目标发送约定格式的数据,比如xml格式
4 你合作伙伴则以信息消费者/使用者的身份,从服务器获取数据。基本流程就是这么多。有一个细节。消费者获取数据一般有2种方法,主动和被动。
主动就是消费者每隔一段时间,主动查询是否有数据,然后断开连接。
被动则是注册好之后,进入wait状态,连接不断开,有数据的时候服务器会反调回来的。如果数据对实时性要求比较高,比如这面有了数据,必须尽快在那面有反应,建议用被动方式。 否则主动更省资源。

解决方案 »

  1.   

    其实每个终端,都可以同时扮演生产者和消费者的,只不过代码不同而已。比如,你可以先使用生产者的身份,发送数据,然后转到消费者的模式等待回应。
    这种类似于串行,你拿不到反馈就不继续处理。还有,你的生产和消费可以在2个线程里面进行,1个线程专门生产,另一个专门消费,读取反馈
    这种类似于并行。推荐并行方式,除非你必须要求每个数据都要求反馈,否则不能继续处理数据的情况。 这个需要你根据实际情况进行确定了。
    继续,我们来讨论数据的处理方式了,因为不在只有单一个生产和消费者了。
    消息可以在一个队列里面,也可以在2个里面进行。如果是2个队列,程序编写简单,你向队列1里面写,从队列2里面读, 对方从队列1里面读,向队列2里面写。 各自分开。 
    推荐这种。也可以是1个队列,这样的话,你的消息就得附加信息了,就不仅仅只有消息内容,还得有消息的方向信息。
    生产者将信息目的设置为对方,消费者看到有消息时,需要设置匹配功能,对于符合匹配条件的,方向是向自己的,进行消费,否则不处理。
    不推荐这样做,虽然节省一个队列,但是操作复杂,容易出错。
    最后,关于消息的内容,因为涉及到需要标识你的回复是回复哪一个的,一个命令的唯一编号需要放在信息里面,也就是xml里面。
    消费者拿到反馈信息,需要判断是否为一个反馈信息,还是对方给的一个命令,是哪个命令,这些都要实现在协议里面协商好,并落实在文档里。
    OVER
      

  2.   

    java2000_net :我分先给你,表示我的诚意,希望你还能和你继续讨论
    如果语言方面双方不一致呢?比如我们使用JAVA,他们是VC或者delphi,或者是C#,这些情况你的做法可以做到吗?
      

  3.   

    请 www.java2000.net 加我QQ吧!