disconf使用中的问题


一. disconfclient的使用demo

https://github.com/Lin-lemon/disconf-demo


二. disconfweb

1. MailBean中配置的邮件不支持ssl,修改mailsender到配置文件中,给javaMailProperties赋值
    <bean name="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${EMAIL_HOST}"/>
        <property name="port" value="${EMAIL_PORT}"/>
        <property name="username" value="${EMAIL_HOST_USER}"/>
        <property name="password" value="${EMAIL_HOST_PASSWORD}"/>

        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
            </props>
        </property>
    </bean>

2.更新配置文件时,整个在一个事务中,包括发送邮件,由于开始时邮件配置有问题且没有超时时间,这里的事务一直无法提交,导致更新失败。
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = RuntimeException.class)
    public String updateItemValue(Long configId, String value) {

        Config config = getConfigById(configId);
        String oldValue = config.getValue();

        //
        // 配置数据库的值 encode to db
        //
        configDao.updateValue(configId, CodeUtils.utf8ToUnicode(value));
        configHistoryMgr.createOne(configId, oldValue, CodeUtils.utf8ToUnicode(value));

        //
        // 发送邮件通知
        //
        String toEmails = appMgr.getEmails(config.getAppId());

        if (applicationPropertyConfig.isEmailMonitorOn()) {
            boolean isSendSuccess = logMailBean.sendHtmlEmail(toEmails,
                    " config update", DiffUtils.getDiff(CodeUtils.unicodeToUtf8(oldValue),
                            value,
                            config.toString(),
                            getConfigUrlHtml(config)));
            if (isSendSuccess) {
                return "修改成功,邮件通知成功";
            } else {
                return "修改成功,邮件发送失败,请检查邮箱配置";
            }
        }

        return "修改成功";
    }

  实际上发送邮件耗时较长,失败也不影响配置文件的更新,不应该占着数据库连接并影响事务提交。事务应该尽可能小,修改之后如下。
    @Override
    public String updateItemValue(Long configId, String value) {

        Config config = getConfigById(configId);
        String oldValue = config.getValue();

        // 更新数据库中配置文件
        updateItemValue(configId,value,oldValue);

        //
        // 发送邮件通知
        //
        String toEmails = appMgr.getEmails(config.getAppId());

        if (applicationPropertyConfig.isEmailMonitorOn()) {
            boolean isSendSuccess = logMailBean.sendHtmlEmail(toEmails,
                    " config update", DiffUtils.getDiff(CodeUtils.unicodeToUtf8(oldValue),
                            value,
                            config.toString(),
                            getConfigUrlHtml(config)));
            if (isSendSuccess) {
                return "修改成功,邮件通知成功";
            } else {
                return "修改成功,邮件发送失败,请检查邮箱配置";
            }
        }

        return "修改成功";
    }

    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = RuntimeException.class)
    private void updateItemValue(Long configId, String value, String oldValue) {
        //
        // 配置数据库的值 encode to db
        //
        configDao.updateValue(configId, CodeUtils.utf8ToUnicode(value));
        configHistoryMgr.createOne(configId, oldValue, CodeUtils.utf8ToUnicode(value));
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值