Search in sources :

Example 1 with ReliableMessageRegisterDto

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);
        }
    }
}
Also used : ReliableMessageRegisterDto(com.paascloud.core.registry.base.ReliableMessageRegisterDto) CoordinatorRegistryCenter(com.paascloud.core.registry.base.CoordinatorRegistryCenter)

Example 2 with ReliableMessageRegisterDto

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;
    }
}
Also used : ReliableMessageRegisterDto(com.paascloud.core.registry.base.ReliableMessageRegisterDto) ChildData(org.apache.curator.framework.recipes.cache.ChildData)

Example 3 with ReliableMessageRegisterDto

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());
    }
}
Also used : ReliableMessageRegisterDto(com.paascloud.core.registry.base.ReliableMessageRegisterDto)

Example 4 with ReliableMessageRegisterDto

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;
    }
}
Also used : ReliableMessageRegisterDto(com.paascloud.core.registry.base.ReliableMessageRegisterDto) ChildData(org.apache.curator.framework.recipes.cache.ChildData)

Aggregations

ReliableMessageRegisterDto (com.paascloud.core.registry.base.ReliableMessageRegisterDto)4 ChildData (org.apache.curator.framework.recipes.cache.ChildData)2 CoordinatorRegistryCenter (com.paascloud.core.registry.base.CoordinatorRegistryCenter)1