使用activemq broker主从时是否也共享调度消息?我通过jdbc成功创建了主从,但是预定的消息没有出现在数据库中。这使得主从代理配置不是真正的 100% 故障转移系统。或者我应该专门设置什么来实现这一点?
使用此代码,我通常会创建代理:
BrokerService brokerService = new BrokerService();
brokerService.setBrokerName(brokerName);
brokerService.addConnector("tcp://" + host + ":" + port);
brokerService.setSchedulerSupport(true);
// Allow JMX monitoring
brokerService.setUseJmx(true);
ManagementContext managementContext = new ManagementContext();
managementContext.setConnectorPort(port + 10000);
managementContext.setRmiServerPort(port + 20000);
brokerService.setManagementContext(managementContext);
// Set temp and store limits to 512MB to avoid
// unrealistic-limit-warnings
brokerService.getSystemUsage().getStoreUsage().setLimit(512 * 1024 * 1024);
brokerService.getSystemUsage().getTempUsage().setLimit(512 * 1024 * 1024);
通过这个添加,我创建了主从数据源:
Map<String, Object> configuration = entityFactory.getProperties();
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName((String) configuration.get("hibernate.connection.driver_class"));
dataSource.setUrl((String) configuration.get("hibernate.connection.url"));
dataSource.setUsername((String) configuration.get("hibernate.connection.username"));
dataSource.setPassword((String) configuration.get("hibernate.connection.password"));
我用来设置主从 jbdcPersistenceAdapter:
JDBCPersistenceAdapter adapter = new JDBCPersistenceAdapter();
adapter.setDataSource(dataSource);
brokerService.setPersistenceAdapter(adapter);
接下来是启动 brokerService:
brokerService.start();
这段代码一切正常。队列在代理之间成功共享,消费者完成他们的工作。消费者有时会创建一个生产者,该生产者成功地使用故障转移 URL 来找出哪个代理在空中。这一切都很好。
但是,计划消息不会出现在数据库中,并且计划消息只会在具有计划消息的代理关闭时停止出现。
谢谢!