ActiveMQ学习-Network connectors JAVA代码实现

一、初始化类

@Component("initListener")
public class InitListener implements ServletContextAware, ApplicationListener<ContextRefreshedEvent> {
	/** logger */
	private static final Logger logger = Logger.getLogger(InitListener.class.getName());

	/** servletContext */
	private ServletContext servletContext;

	@Value("${system.version}")
	private String systemVersion;
	
	@Resource(name = "cacheServiceImpl")
	private CacheService cacheService;
	@Resource(name = "searchServiceImpl")
	private SearchService searchService;
	
	@Resource(name = "accessServerServiceImpl")
	private AccessServerService accessServerService;
	
	@Autowired
	private MqServer mqServer;

	@Override
	public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
		if(servletContext != null && contextRefreshedEvent.getApplicationContext().getParent() == null){
			logger.debug("系统初始化开始……");
			initSyncRuleMap();
			
			initMqServer();
		}
		
	}
	
	
	private void initMqServer() {
		//查询所有mq的地址,循环开启链接
		if (accessServerService ==null)
			accessServerService = (AccessServerService) SpringUtils.getBean("accessServerServiceImpl");
		List<AccessServer> servers = accessServerService.findAll();
		for (AccessServer accessServer : servers) {
			mqServer.addNetworkConnector("tcp://" + accessServer.getServerAddress());
		}
	}

	
	public void setServletContext(ServletContext servletContext) {
		this.servletContext = servletContext;
	}

}

二、mqserver 服务类

@Service("mqServer")
public class MqServer {
	
	private static Logger logger = Logger.getLogger(MqServer.class);

	@Resource(name = "tamperServer")
	private TamperServerImpl tamperServer;

	@Resource(name = "amqBroker")
	private BrokerService broker;

	@Value(value = "${activemq.username}")
	private String brokerUserName;

	@Value(value = "${activemq.password}")
	private String brokerPassword;

	/**
	 * 添加网络连接
	 * 
	 * @param netWorkUrl
	 */
	public void addNetworkConnector(String netWorkUrl) {
		try {
			URI localURI = URI.create("static:(" + netWorkUrl + ")");
			NetworkConnector networkConnector = new DiscoveryNetworkConnector(localURI);
			networkConnector.setUserName(brokerUserName);
			networkConnector.setPassword(brokerPassword);
			networkConnector.setDuplex(true);
			networkConnector.setBrokerName(netWorkUrl);
			networkConnector.setName(netWorkUrl);
			broker.addNetworkConnector(networkConnector);
			networkConnector.start();
		} catch (Exception e) {
			logger.error("activemq 增加 NetworkConnector 失败,异常:" + e.getMessage());
		}
	}
	
	/**
	 * 添加网络连接
	 * 
	 * @param netWorkUrl
	 */
	public void removeNetworkConnector(String netWorkUrl) {
		try {
			NetworkConnector connector = broker.getNetworkConnectorByName(netWorkUrl);
			broker.removeNetworkConnector(connector);
			connector.stop();
		} catch (Exception e) {
			logger.error("activemq 删除  NetworkConnector 失败,异常:" + e.getMessage());
		}
	}
}

猜你喜欢

转载自my.oschina.net/u/3391025/blog/1629178