1:消息:就是一段包含业务信息的数据;如一段字符串。
2:队列:就是一个临时保存消息的缓存。通常情况下按先进先出的规则保存。
3:队列管理器:管理它所拥有的所有队列,管理队列的生命周期。它是队列的生存环境。类似java中的context(上下文);
4:通道:从java角度,它本质上就是一个socket。通过ip,端口,用于与其它机器建立连接。
1:webspheremq 程序:相当于数据库程序
2:队列管理器:相当于数据库中的一个具体数据库实例;如:数据库中的学生信息数据库。
3:队列:相当于数据库的表;
4:消息:相当于数据库的一条记录;
5:通道:这是数据库中不曾有的功能。
应用系统MM调用另一网络中的应用系统GG的一个功能,并传递一个参数,然后把处理结果返回给应用系统MM。
(1):应用系统通过JMS/MQI向队列管理器中的请求队列发送消息;
(2):请求队列连接发送通道,把消息发送给发送通道。
(3):本地(A)发送通道与远程机子(B)上的接收通道在网络正常的情况下建立连接,关把消息发送到远程机器(B)上的接收通道。
(4):远程机器(B)上的接收通道与其内部(B)的请求队列建立连接。并传送请求消息。
此时:本地队列与远程机子上的请求队列间接建立连接。本地请求队列中的消息发向远程机子上的请求队列
(5):远程机子上的应用系统GG在合适的时间(例如不忙时)取走其机器上请求队列中的消息进行业务处理。
(6):应用系统GG把处理的结果放入其机器上的结果队列。
(7):结果队列把结果消息发送给发送通道。
(8):B上的发送通道连接A上的接收通道,并把结果消息发送到A上的接收通道。
(9):A上的接收通道把结果传送到结果队列缓存中;
(10):等待应用系统MM在合适的时间取走结果,进行后续处理。
注意事项:队列中并没有请求队列和接收队列这样的队列类型,此处只是一个直观的名称,便于理解。
应用系统MM调用另一网络中的应用系统GG的一个功能,并传递一个参数,然后把处理结果返回给应用系统MM。
(1):A中的应用系统MM通过JDBC向数据库db_MM的请求表中插入一条记录;
(2):自己用java实现的socket通过监听程序取走请求表中的数据;
(3):连接B中的socket ,并把数据传输到B中;
(4):B中的socket把数据写入到B中的请求表;
(5):B中的系统GG从请求表中取走数据,并处理;
(6):把处理结果插入到B中的数据db_GG的结果表中;
(7):B中的socket通过监听程序取走B中结果表的数据;
(8):B中的socket与A中的socket连接,并传输数据;
(9):A中的socket把接收到的数据插入到A中的数据库db_MM的结果表中;
(10):应用系统MM从A中的结果表中取走结果数据。
一次请求结束。
数据库与wmq对比:
(1):内网系统与数据库/mq的连接
如果使用java接口连接,两者非常相似;
数据库使用jdbc连接数据库。Mq使用jms连接mq;
(2):存储:
数据库通过表来保存数据。
Wmq通过队列来缓存数据。
(3):外网连接:
数据库与数据库之间并不能进行通讯;只能通过自己编写连接代码来实现可靠安全的传输机制;
Wmq之间可以进行通讯,而且能保证数据在不同网络之间的安全可靠的传输。
总结:
(1):从使用角度而言:wmq更类似数据库;
(2):从功能来看:wmq更接近socket.因为它的出现就是为了解决网络传输问题(安全,可靠,异构,同步)。此时,数据库只类似于wmq中的缓存即队列;
一句话:wmq就是一个数据库与极致化的sokcet的杂合体。
或者:是一个实现了数据库之间安全可靠传输的数据库。
或者:是一个具有数据库功能的极致化的socket.