1.MQ要解决的问题:
将同步通信改为异步通信。
同步通信:客户端发出调用后,必须等待服务器对象完成处理并返回结果后才能继续执行;
客户端和服务器端对象的生命周期紧密耦合,客户端进程和服务器端进程都必须正常运行;
点对点通信:客户端的一次调用只发送给某个单独的目标对象;
面向消息的中间件较好的解决了以上问题,发送者将消息发送给消息服务器,消息服务器将消息存放
在若干队列中,在合适的时候在将消息发送给接收者,这种模式下发送和接收是异步的,发送者无需
等待,二者的生命周期未必相同,发送消息的时候接收者不一定运行,接收消息的时候发送者不一定
运行。一对多通信,对于一个消息可以有多个接收者。(此段大概看一下就行,知道MQ有个生命好
处)。
2.PTP和PUB、SUB各自对应的目标对象
PTP:即点对点的消息模型,对应Query
PUB/SUB:发布订阅的消息模型,对应的是Topic。
2.JMS定义了5中不同的消息正文格式,以及调用的消息类型,允许你发送并接收一些不同形式的数据
(1)StreamMessage:java原始的数据流
(2)MapMessage:一套名称-值对
(3)TextMessage:一个字符串对象
(4)ObjectMessage:一个序列化的java对象
(5)BytesMessage:一个未解释的字节数据流
3.ActiveMQ支持的5种协议:
Tcp、AMQP、MQTT、OpenWire、Stomp、ws。
ActiveMQ的时候需要自己写一个系统实现分流和排队
分流:他来确定某几个消息发送给哪些个消费者
排队:例如把消息发送个C1,C1消费完后在把消息发送给C2,C2消费完后在把消息发送给C3。
4.MQ使用的时候不能传大数据,比如传几M几十M的可以但是到了几百M的就不行了。