在Java 学习中Window操作系统下,类似ActiveMQ,Tomcat服务开启服务之后,服务在后台执行,经常遇到端口被占用该怎么办呢?可能多少童鞋都是进行修改端口或者重启相关的服务,但是重新启动之后,相关的端口仍然被占用。我们可能查找进程并kill进程。
在window系统下:
查看进程号:
netstat -ano | find "被占用端口号"
kill进程:
资源管理器kill进程。
在linux/unix系统下:
查看进程号:
netstat -ano | grep "被占用端口号"
kill进程号:
kill -9 进程号
ActiveMQ可以实现多个mq之间进行路由,假设有两个mq,分别为brokerA和brokerB,当有一条消息发送到brokerA的队列test中,有一个客户端连接到brokerB上,并且要求获取test队列的消息时,brokerA中队列test的消息就会路由到brokerB上,反之brokerB的消息也会路由到brokerA。
静态路由配置,brokerA不需要特别的配置,brokerB需要配置networkConnectors节点,具体配置如下:
|
<networkConnectors>
<networkConnector uri="static:(tcp://localhost:61616)"duplex="true"/>
</networkConnectors>
|
静态路由支持failover,如:static:failover://(tcp://host1:61616,tcp://host2:61616)。
动态路由配置,每个mq都需要配置如下:
|
<networkConnectors>
<networkConnector uri="multicast://default"/>
</networkConnectors>
<transportConnectors>
<transportConnector name="openwire"uri="tcp://0.0.0.0:61618"discoveryUri="multicast://default"/>
</transportConnectors>
|
注意:networkConnectors需要配置在persistenceAdapter之前。
重启ActiveMQ,可以看到brokerA的日志如图:
networkConnector的属性请参照:http://activemq.apache.org/networks-of-brokers.html
ActiveMQ的主备有三种方式:纯Master/Slave、文件共享方式、数据库共享方式。
1、纯Master/Slave
这种方式的主备不需要对Master Broker做特殊的配置,只要在Slave Broker中指定他的Master就可以了,指定Master有两种方式,最简单的配置就是在broker节点中添加masterConnectorURI=”tcp://localhost:61616″即可,还有一种方式就是添加一个services节点,可以指定连接的用户名和密码,配置如下:
|
<services>
<masterConnector remoteURI="tcp://localhost:61616"userName="system"password="manager"/>
</services>
|
纯Master/Slave只允许一个Slave连接到Master上面,也就是说只能有2台MQ做集群,同时当Master挂了之后需要停止Slave来恢复负载。
2、数据库共享方式
这种方式的主备采用数据库做消息的持久化,支持多个Slave,所有broker持久化数据源配置成同一个数据源,当一个broker获取的数据库锁之后,其他的broker都成为slave并且等待获取锁,当master挂了之后,其中的一个slave将会立刻获得数据库锁成为master,重启之前挂掉的master之后,这个master也就成了slave,不需要停止slave来恢复。由于采用的是数据库做为持久化,它的性能是有限的。
3、文件共享方式
这种方式的主备具有和数据库共享方式的负载一样的特性,不同的是broker的持久化采用的是文件(我这里用KahaDB),slave等待获取的锁是文件锁,它具有更高的性能,但是需要文件共享系统的支持。
Window下共享KahaDB持久化的目录,配置如下:
|
<persistenceAdapter>
<kahaDB directory="//172.16.1.202/mqdata/kahadb"/>
</persistenceAdapter>
|
Linux下需要开启NFS服务,具体操作如下:
创建共享目录(192.168.0.1):
1、 修改etc/exports,添加需要共享的目录:/opt/mq/data *(rw,no_root_squash)
2、 启动NFS服务 service nfs start/restart
3、 查看共享 showmount –e
4、 NFS服务自启动 chkconfig –level 35 nfs on
挂载共享目录(192.168.0.2):
1、 挂载:mount –t nfs 192.168.0.1:/opt/mq/data /opt/mq/data
2、 启动自动挂载:在etc/fstab文件添加10.175.40.244:/opt/mq/data /opt/mq/data nfs defaults 0 0
然后指定KahaDB的持久化目录为/opt/mq/data即可。
AIX系统的文件共享和Linux类似,也是启动NFS服务。
注意:如果Master服务器宕机了,Slave是不会获得文件锁而启动,直到Master服务器重启。
Window下Master上有Slave连接时如图:
客户端连接的brokerURL为failover:(tcp://localhost:61616,tcp://localhost:61617)。用第三部分的代码测试,先向Master Broker发送一个消息,然后关闭master,运行获取消息的方法,即可获取之前发送的消息。
分享到:
相关推荐
activemq负载均衡实现.doc
ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试
ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试
高可用之ActiveMQ高可用+负载均衡集群的安装、配置、高可用测试--java源码
ActiveMQ主备自动failover方案 ActiveMQ5.8.0版本的主备有两种方式:共享文件系统、共享数据库。性能上共享文件系统要优于共享数据库。 本文档采用共享文件系统的方式实现主备。共享文件系统最好使用分布式文件存储...
linux下activemq安装包和配置文档
activemq 配置的相关文档,助你完善activeMQ的配置
activemq服务器使用的zookeeper replicable 的方式进行负载均衡以及容灾,客户端使用spring进行配置
activemq 配置说明与activemq入门讲解
ActiveMQ+zookeeper实现高可用和负载均衡(代码和测试)
Apache-ActiveMQ高可用性之负载均衡.docx
ActiveMQ的安装和配置,负载均衡,集群,性能优化
window搭建activeMQ集群(linux系统搭建集群的方式和window的一样),还有自己写的搭建集群的文档和我自己亲手搭建的一个三个mq集群
NULL 博文链接:https://wukele.iteye.com/blog/2308104
ActiveMQ5.13 安装与配置
资源好源码、文档
用于ACtiveMq 配置插件配置使用,配置介绍等,适合初学者
1、httpd在linux下部署配置文件 2、ActiveMQ在linux下部署配置文件 3、Tomcat在Linux下部署配置文件 4、Jboss在Linux下部署配置文件
spring activeMQ demo 配置
ActiveMQ安装及配置文档介绍了ActiveMQ的安装过程和配置。让新手踏入JMS的门槛。