ActiveMQ learning-Network connectors JAVA code implementation

First, the initialization class

@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;
	}

}

2. mqserver service class

@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());
		}
	}
}

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325229239&siteId=291194637