在公司的项目开发中,使用到了IBMMQ和rabbitMq两种消息队列,实际使用过程中,发现他们其实是有点不同的。分享出来大家一起交流学习。
队列节点个数不同;
IBMmq的使用和涉及逻辑是:发送永远操作的是远程队列,接收操作的永远都是本地队列。
注意:远程和本地队列,这个远程和本地只是一个概念区分,区分一下什么样的操作应该对应什么样的队列。而不是说这个队列是一个在本地一个在远程。
举例:
A系统 和 B系统之间通过IBM通信
在一个A和B都能访问的到服务器上面搭建一个IBM服务器。然后创建连个队列管理器
QM_A 、QM_B
然后在QM_A和QM_B两个队列管理器上面各创建两个队列
QM_A:-->QL_A(本地队列A)、QR_A(远程队列A)
QM_B:-->QL_B(本地队列B)、QR_B(远程队列B)
A系统和B系统 都各自跟各自的队列管理器进行交互。
这里需要注意的是,进行交互数据的两个队列,要配置相同的通道。
即:
A远程和B本地两个队列会建立起连接通道
B远程和A本地两个队列会建立起连接通道
实际的数据交互过程是:
1、A系统发送数据给B:
A系统发送数据到QR_A,IBM会把QR_A的数据同步到QL_B。然后B系统从QL_B本地取数据。这个过程就是A向B发送数据通信的过程
2、B系统发送数据给A:
B系统发送数据到QR_B,IBM会把QR_B的数据同步到QL_A。然后A系统从QL_A本地取数据。这个过程就是B向A发送数据通信的过程
总结一下就是:
IBMmq实现数据通信其实并不仅仅是一个消息中间件的缓存概念,而是有他自己的一套设计规范,不同的队列干着不同的事。
但是rabbitMQ其实就是一个数据缓存的作用,并且rabbitMQ的Q是单向是,定义一个Q就定义好了这个Q是A来pushB来拉取,然后在定义另外一个Q,是B来push A 来l拉取。
接下里会更新IBMMQ 的本地队列和远程队列的创建和配置。