Apache ActiveMQ 集群配置方法
来源:互联网 发布:阿里云生态合作伙伴 编辑:程序博客网 时间:2024/05/11 22:07
构建高可用的AMQ系统在生产环境中是非常重要的,对于这个apache的消息中间件实现高可用非常简单,只要在Apache ActiveMQ单点基本配置基础上做一次配置变更(如果在一台设备上部署多个AMQ,需要修改对应端口号),即可实现。
AMQ实现高可用部署有三种方案:
1、Master-Slave
2、SharedFile System Master Slave
3、JDBCMaster Slave
第一种方案由于只可以由两个AMQ实例组件,实际应用场景并不广泛;
而第三种方案支持N个AMQ实例组网,但他的性能会受限于数据库;
而第二种方案同样支持N个AMQ实例组网,但由于他是基于kahadb存储策略,亦可以部署在分布式文件系统上,应用灵活、高效且安全。
集群配置方法参考:
http://activemq.apache.org/masterslave.html
“Apache ActiveMQ单点基本配置” 原配置内容:
<persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb" enableIndexWriteAsync="true" enableJournalDiskSyncs="false"/> <!--<amqPersistenceAdapter directory="${activemq.data}/activemq-data" /> --> </persistenceAdapter>
修改为:
<persistenceAdapter> <kahaDB directory="X:\\shareBrokerData"enableIndexWriteAsync="true"enableJournalDiskSyncs="false"/> </persistenceAdapter>
注意:
1、前面提到部署一台设备上的AMQ系统,需要修改对应的端口号,如AMQ对外的监听端口61616和jetty的监听端口8161等。
2、如果多套AMQ部署在不同的设备上,这里的directory应该指向一个远程的系统目录(分布式文件系统)
Producer for java:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("failover:(tcp://192.168.0.87:61616?wireFormat.maxInactivityDuration=0,tcp://192.168.0.87:61617?wireFormat.maxInactivityDuration=0)"); Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue(qName); ActiveMQMessageProducer producer = (ActiveMQMessageProducer) session.createProducer(queue); // Default DeliveryMode.PERSISTENT //producer.setPriority(3); // Default priority 4. //producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); session.createObjectMessage(); jmsMessage.setObject(message); while(true){ producer.send(jmsMessage); TimeUnit.MILLISECONDS.sleep(10); }
Consumer for java:
final String qName = "Test.foo?consumer.prefetchSize=100";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("failover:(tcp://192.168.0.87:61616,tcp://192.168.0.87:61617)"); Connection connection = connectionFactory.createConnection();connection.start();final Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(qName);ActiveMQMessageConsumer consumer = (ActiveMQMessageConsumer) session.createConsumer(destination);System.out.println(consumer.getPrefetchNumber());//listener 方式 consumer.setMessageListener(new MessageListener() { public void onMessage(Message msg) { //TODO something.... try {System.out.println("收到消息:"+counter.incrementAndGet()+","+msg);} catch (JMSException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} } });
通过failover方式进行连接,多个AMQ实例地址使用英文逗号隔开,当某个实例断开时会自动重连,但如果所有实例都失效,failover默认情况下会无限期的等待下去,不会有任何提示。
failover参数配置参考:
http://activemq.apache.org/failover-transport-reference.html
3 3
- Apache ActiveMQ 集群配置方法
- Apache ActiveMQ 集群配置方法
- Apache ActiveMQ 单点集群配置方法
- ActiveMQ的集群配置
- ActiveMQ 集群配置
- ActiveMQ集群负载配置
- activemq集群配置说明
- ActiveMQ集群配置
- Apache ActiveMQ实战(2)-集群
- Apache ActiveMQ实战(2)-集群
- Apache ActiveMQ实战(2)-集群
- Apache ActiveMQ实战(2)-集群
- Apache ActiveMQ配置
- Apache+Tomcat集群配置 采用mod_jk方法
- RedHat下ActiveMQ集群配置
- Activemq 安装与集群配置
- ActiveMQ Master Slave集群配置
- ActiveMQ集群的安装配置
- char、nchar、varchar、nvarchar、text、ntext的区别
- dwr WebContextFactory 工厂模式
- VS2005启动调试器很慢的解决办法
- ios项目生成ipa文件的真正简单可用的方法
- OpenCV形态学操作
- Apache ActiveMQ 集群配置方法
- Powdesign15连接sql2005相关
- Linux下删除无用的(很久没有访问或者修改)的文件
- Xcode键盘快捷键
- NoSQL数据库的35个应用场景
- 如何把linux默认自带的openJDK改为oracle的JDK
- 今年调研的开源软件(2)
- 关于Apple开发者账号的申请
- C++ DLL导出函数的两种方法