use of com.paascloud.core.registry.base.ReliableMessageRegisterDto in project paascloud-master by paascloud.
the class MqBeanInitRunner method run.
/**
* Run.
*
* @param args the args
*/
@Override
public void run(String... args) throws Exception {
CoordinatorRegistryCenter coordinatorRegistryCenter = RegistryCenterFactory.createCoordinatorRegistryCenter(paascloudProperties.getZk());
List<String> childrenKeys = coordinatorRegistryCenter.getChildrenKeys(GlobalConstant.ZK_REGISTRY_PRODUCER_ROOT_PATH);
this.initMqListener(coordinatorRegistryCenter);
for (final String childrenKey : childrenKeys) {
int count = coordinatorRegistryCenter.getNumChildren(GlobalConstant.ZK_REGISTRY_PRODUCER_ROOT_PATH + GlobalConstant.Symbol.SLASH + childrenKey);
if (count == 0) {
continue;
}
String producerString = coordinatorRegistryCenter.getDirectly(GlobalConstant.ZK_REGISTRY_PRODUCER_ROOT_PATH + GlobalConstant.Symbol.SLASH + childrenKey);
ReliableMessageRegisterDto producerDto = JSON.parseObject(producerString, ReliableMessageRegisterDto.class);
MqProducerBeanFactory.buildProducerBean(producerDto);
try {
tpcMqProducerService.updateOnLineStatusByPid(producerDto.getProducerGroup());
} catch (Exception e) {
log.error("更新生产者状态为离线出现异常, ex={}", e.getMessage(), e);
}
}
}
use of com.paascloud.core.registry.base.ReliableMessageRegisterDto in project paascloud-master by paascloud.
the class MqProducerChangeListener method childEvent.
/**
* Child event.
*
* @param client the client
* @param event the event
*/
@Override
public void childEvent(final CuratorFramework client, final TreeCacheEvent event) {
ChildData data = event.getData();
if (data == null) {
return;
}
String path = data.getPath();
if (GlobalConstant.ZK_REGISTRY_PRODUCER_ROOT_PATH.equals(path) || GlobalConstant.ZK_REGISTRY_CONSUMER_ROOT_PATH.equals(path)) {
return;
}
String[] split = path.split(GlobalConstant.Symbol.SLASH);
String dataStr = new String(data.getData());
switch(event.getType()) {
case NODE_ADDED:
log.info("MqProducerChangeListener CHILD_ADDED path={}, data={}", path, dataStr);
if (split.length == GlobalConstant.Number.SIX_INT) {
String appPath = path.substring(0, path.lastIndexOf(GlobalConstant.Symbol.SLASH));
ReliableMessageRegisterDto dto = JSON.parseObject(getDirectly(client, appPath), ReliableMessageRegisterDto.class);
if (this.getNumChildren(client, appPath) > 0) {
tpcMqProducerService.updateOnLineStatusByPid(dto.getProducerGroup());
MqProducerBeanFactory.buildProducerBean(dto);
MqProducerBeanFactory.putPid(dto.getProducerGroup());
}
}
break;
case NODE_REMOVED:
log.info("MqProducerChangeListener NODE_REMOVED path={}, data={}", path, dataStr);
if (split.length == GlobalConstant.Number.SIX_INT) {
String appPath = path.substring(0, path.lastIndexOf(GlobalConstant.Symbol.SLASH));
ReliableMessageRegisterDto dto = JSON.parseObject(getDirectly(client, appPath), ReliableMessageRegisterDto.class);
if (this.getNumChildren(client, appPath) < 1) {
tpcMqProducerService.updateOffLineStatusByPid(dto.getProducerGroup());
MqProducerBeanFactory.rmPid(dto.getProducerGroup());
}
}
break;
case NODE_UPDATED:
log.error("本次版本不对更新做处理, path={}, data={}", path, new String(data.getData()));
break;
default:
break;
}
}
use of com.paascloud.core.registry.base.ReliableMessageRegisterDto in project paascloud-master by paascloud.
the class ZookeeperRegistryCenter method registerMq.
/**
* Register mq.
*
* @param app the app
* @param host the host
* @param producerGroup the producer group
* @param consumerGroup the consumer group
* @param namesrvAddr the namesrv addr
*/
@Override
public void registerMq(final String app, final String host, final String producerGroup, final String consumerGroup, String namesrvAddr) {
// 注册生产者
final String producerRootPath = GlobalConstant.ZK_REGISTRY_PRODUCER_ROOT_PATH + GlobalConstant.Symbol.SLASH + app;
final String consumerRootPath = GlobalConstant.ZK_REGISTRY_CONSUMER_ROOT_PATH + GlobalConstant.Symbol.SLASH + app;
ReliableMessageRegisterDto dto;
if (StringUtils.isNotEmpty(producerGroup)) {
dto = new ReliableMessageRegisterDto().setProducerGroup(producerGroup).setNamesrvAddr(namesrvAddr);
String producerJson = JSON.toJSONString(dto);
this.persist(producerRootPath, producerJson);
this.persistEphemeral(producerRootPath + GlobalConstant.Symbol.SLASH + host, DateUtil.now());
}
// 注册消费者
if (StringUtils.isNotEmpty(consumerGroup)) {
dto = new ReliableMessageRegisterDto().setConsumerGroup(consumerGroup).setNamesrvAddr(namesrvAddr);
String producerJson = JSON.toJSONString(dto);
this.persist(consumerRootPath, producerJson);
this.persistEphemeral(consumerRootPath + GlobalConstant.Symbol.SLASH + host, DateUtil.now());
}
}
use of com.paascloud.core.registry.base.ReliableMessageRegisterDto in project paascloud-master by paascloud.
the class MqConsumerChangeListener method childEvent.
/**
* Child event.
*
* @param client the client
* @param event the event
*/
@Override
public void childEvent(final CuratorFramework client, final TreeCacheEvent event) {
ChildData data = event.getData();
if (data == null) {
return;
}
String path = data.getPath();
if (GlobalConstant.ZK_REGISTRY_CONSUMER_ROOT_PATH.equals(path) || GlobalConstant.ZK_REGISTRY_CONSUMER_ROOT_PATH.equals(path)) {
return;
}
String[] split = path.split(GlobalConstant.Symbol.SLASH);
String dataStr = new String(data.getData());
switch(event.getType()) {
case NODE_ADDED:
log.info("MqConsumerChangeListener CHILD_ADDED path={}, data={}", path, dataStr);
if (split.length == GlobalConstant.Number.SIX_INT) {
String appPath = path.substring(0, path.lastIndexOf(GlobalConstant.Symbol.SLASH));
ReliableMessageRegisterDto dto = JSON.parseObject(getDirectly(client, appPath), ReliableMessageRegisterDto.class);
if (this.getNumChildrenCount(client, appPath) > 0) {
tpcMqConsumerService.updateOnLineStatusByCid(dto.getConsumerGroup());
MqProducerBeanFactory.putCid(dto.getConsumerGroup());
}
}
break;
case NODE_REMOVED:
log.info("MqConsumerChangeListener NODE_REMOVED path={}, data={}", path, dataStr);
if (split.length == GlobalConstant.Number.SIX_INT) {
String appPath = path.substring(0, path.lastIndexOf(GlobalConstant.Symbol.SLASH));
ReliableMessageRegisterDto dto = JSON.parseObject(getDirectly(client, appPath), ReliableMessageRegisterDto.class);
if (this.getNumChildrenCount(client, appPath) < 1) {
tpcMqConsumerService.updateOffLineStatusByCid(dto.getConsumerGroup());
MqProducerBeanFactory.rmCid(dto.getConsumerGroup());
}
}
break;
case NODE_UPDATED:
log.error("MqConsumerChangeListener 本次版本不对更新做处理, path={}, data={}", path, new String(data.getData()));
break;
default:
break;
}
}
Aggregations