1. 下载AMQ安装文件
apache-activemq-5.6.0-bin.tar.gz
http://download.csdn.net/detail/tianwei7518/6789701
2. 安装AMQ安装
上传到linux的指定目录,使用
tar –zxvf apache-activemq-5.6.0-bin.tar.gz
出现apache-activemq-5.6.0文件夹即可
3. 配置AMQ
进入apache-activemq-5.6.0/conf目录下,替换配置文件activemq.xml,替换文件见:http://download.csdn.net/detail/tianwei7518/6789659
4. 启动AMQ服务器
apache-activemq-5.6.0/bin/activemqstatus 启动状态查看
apache-activemq-5.6.0/bin/activemqstop 关闭
apache-activemq-5.6.0/bin/activemqstart 启动
apache-activemq-5.6.0/bin/activemqrestart 重启
apache-activemq-5.6.0/bin/activemqconsole 控制台
5启动检查
amq服务器启动默认端口为61616
查看:netstat -an | grep 61616
也可以通过web查看,amq默认开启的web管理,默认端口为:8161
http://192.168.10.104:8161/admin/
下载程序(http://download.csdn.net/detail/tianwei7518/6789675)导入eclipse中,如图:
将配置文件
中的tcp链接改为你的AMQ服务器所在的机器的IP
先启动Consumer,在启动Producer。可以多起几个消费者,由于配合的原因只有一个消费者消费,这种情况可以用于消费者的主备配置。
可以有多个生产者向AMQ服务器队列queue和主题topic中发消息。
为防止AMQ服务器单点故障可以使用多台做主备。只需多部署几台AMQ服务器,并在配置
中多加几个链接字符串,用逗号分隔,如:
“tcp://192.168.10.104:61616?wireFormat.maxInactivityDuration=300000&wireFormat.maxInactivityDurationInitalDelay=120000,tcp://192.168.10.105:61616?wireFormat.maxInactivityDuration=300000&wireFormat.maxInactivityDurationInitalDelay=120000”
当配置多个时,只有一个主服务器,其余为备份服务器,当主服务器宕机时,备服务器中一个切换为主服务器。且主备服务器中只有主服务器开启了tcp端口,备服务器只有切换后才开启。
为了防止消费者宕机的情况,可以部署多个消费者,使这几个消费者只有一个消费,其余作为备份的,当活动的消费者宕机,由其余备份的消费者不上,这时可以指定这几个消费者订阅的主题一样,启用镜像队列VirtualTopic并指定consumer.exclusive=false,开启AMQ独占消费。
配置如下:
生产者:
消费者:
其中:${consumer.nodename}配置参数
注:(1)若使所有的消费者只用一个消费者消费,指定${consumer.nodename}为固定的值或使用队列传输数据。
(2)若所有消费者都能消费配置生产者和消费者的主题相同,并将consumer.exclusive=false去除。
ActiveMQ中Queue与Topic的比较
1、JMS Queue执行load balancer语义:
一条消息仅能被一个 consumer收到。如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer那儿。一个Queue可以有很多 consumer,并且在多个可用的consumer中负载均衡。
2、Topic实现publish和subscribe语义:
一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。
3、分别对应两种消息模式:
Point-to-Point(点对点),Publisher/Subscriber Model (发布/订阅者)
其中在Publicher/Subscriber模式下又有Nondurable subscription(非持久订阅)和durable subscription (持久化订阅)2种消息处理方式。