mq是一个消息中间件,比如:activemq、rabbitmq、kafka都属于mq,是mq的产品。
activemq 是apache出品,最流行的,能力强劲的开源消息总线。activemq 是一个完全支持jms1.1和j2ee 1.
4规范的 jms provider实现的消息中间件(message oriented middleware,mom),尽管jms规范出台已经是很久的事情了,但是jms在当今的j2ee应用中间仍然扮演着特殊的地位。
主要特点:1. 多种语言和协议编写客户端。
语言: j**a,c,c++,c#,ruby,perl,python,php。应用协议:
openwire,stomp rest,ws notification,xmpp,amqp。
2. 完全支持jms1.1和j2ee 1.4规范 (持久化,xa消息,事务)
3. 对spring的支持,activemq可以很容易内嵌到使用spring的系统里面去,而且也支持spring2.0的特性。
4. 通过了常见j2ee服务器(如 geronimo,jboss 4,glassfish,weblogic)的测试,其中通过jca 1.5 resource adaptors的配置,可以让activemq可以自动的部署到任何兼容j2ee 1.
4 商业服务器上。
5. 支持多种传送协议:in-vm,tcp,ssl,nio,udp,jgroups,jxta
6. 支持通过jdbc和journal提供高速的消息持久化。
7. 从设计上保证了高性能的集群,客户端-服务器,点对点。
8. 支持ajax
9. 支持与axis的整合。
10. 可以很容易得调用内嵌jms provider,进行测试。
对于消息的传递有两种类型:
1. 点对点模式,即一个生产者和一个消费者一一对应。
2. 发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。
jms定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。
· streammessage --j**a原始值的数据流。
· mapmessage--一套名称-值对。
· textmessage--一个字符串对象。
· objectmessage--一个序列化的 j**a对象。
· bytesmessage--一个字节的数据流。
基本功能:将信息以消息的形式,从一个应用程序传递到另一个或多个应用程序。
主要特点:1. 消息异步接收。
2. 消息可靠接受,确保消息在中间件可靠保存,只有接收方接收到后才删除信息,多个消息也可以组成原子事务。
消息中间件的主要应用场景:
在多个系统间进行整合和通讯的时候,通常会要求:
1. 可靠传输。
2. 异步传输,否则各个系统同步发送接收数据,互相等待,造成系统瓶颈。
比较知名的消息中间件:
ibm mqservies
bea weblogic jsm server
oracle aq
tibcoswiftmq
activemq是一款免费的j**a实现的消息中间件。
进入**activemq
点对点:发布/订阅:
工程需要添加jar包:
生产者:生产消息,发送端。
第一步:创建connectionfactory对象,需要指定服务端ip及端口号。
第二步:使用connectionfactory对象创建一个connection对象。
第三步:开启连接,调用connection对象的start方法。
第四步:使用connection对象创建一个session对象。
第五步:使用session对象创建一个destination对象(topic、queue),此处创建一个queue对象。
第六步:使用session对象创建一个producer对象。
第七步:创建一个message对象,创建一个textmessage对象。
第八步:使用producer对象发送消息。
第九步:关闭资源。
消费者:接收消息。
第一步:创建一个connectionfactory对象。
第二步:从connectionfactory对象中获得一个connection对象。
第三步:开启连接。调用connection对象的start方法。
第四步:使用connection对象创建一个session对象。
第五步:使用session对象创建一个destination对象。和发送端保持一致queue,并且队列的名称一致。
第六步:使用session对象创建一个consumer对象。
第七步:接收消息。
第八步:打印消息。
第九步:关闭资源。
使用步骤:第一步:创建connectionfactory对象,需要指定服务端ip及端口号。
第二步:使用connectionfactory对象创建一个connection对象。
第三步:开启连接,调用connection对象的start方法。
第四步:使用connection对象创建一个session对象。
第五步:使用session对象创建一个destination对象(topic、queue),此处创建一个topic对象。
第六步:使用session对象创建一个producer对象。
第七步:创建一个message对象,创建一个textmessage对象。
第八步:使用producer对象发送消息。
第九步:关闭资源。
KDJ实战与应用
一 kdj不能反应出涨幅的高低。二 kdj适用于 三 kdj高抛低吸的操作。四 注意 值大于 后的走向,若 以上没有死叉的可持有。五 可使用两次交叉,保证可靠性,在两次交叉 金叉最好在 值在 以后或附近 后 但要注意两个交叉时间越短越好,最长是一个月内。注意是金叉不是死叉。六 如果出现两个金叉第二个...
高绩效项目管理实战与应用
2天 如何理解项目管理和日常运作的区别?项目管理具有哪些精髓思想?项目管理的整体运作模式框架如何构建?如何掌握和应用项目管理过程的工具 模板 方法?如何提升跨部门协同工作的项目工作效率?如何转换项目负责人与项目成员,以及部门人员之间的角色?资深项目管理专家将对项目管理成功要点进行深入解剖,并以成功案...
周K的分析与实战应用
不少投资者都比较重视对日 方面的分析,但对于周 在 的操作中却常常并不十分留意。其实日 是对一个交易日的记录,由于变化太快,极易出现技术性陷阱。而周 反映的是一周的交易状况,短期 上出现的较大波动在周 上一般都会被过滤或烫平。因此,如果能够将日 的分析和周 的分析相结合,对操作指导的效果会更好。在实...