当前位置: 首页 > 知识库问答 >
问题:

Apache是否支持分布式事务

薛经纶
2023-03-14
           IgniteTransactions transactions = ignite.transactions();
           p1.setSalary(500);
           p2_1.setSalary(1500);
           Transaction tx = transactions.txStart(TransactionConcurrency.PESSIMISTIC,TransactionIsolation.SERIALIZABLE);
        
         try {
           cache.put(1L, p1);
           
           cache2.put(1L,p2_1);
           
           tx.commit();
         }catch(Exception e) {
             tx.rollback();
         }
    public void write(Entry<? extends Long, ? extends Person> entry) throws CacheWriterException {
      System.out.println(" +++++++++++  single wirte");
       Long key = entry.getKey();
        Person val = entry.getValue();

        System.out.println(">>> Store write [key=" + key + ", val=" + val + ']');

        try {
            Connection conn = dataSource.getConnection();

            int updated;

            // Try update first. If it does not work, then try insert.
            // Some databases would allow these to be done in one 'upsert' operation.
            try (PreparedStatement st = conn.prepareStatement(
                "update PERSON set orgId = ?, name = ?, salary=?  where id = ?")) {
                st.setLong(1, val.getOrgId());
                st.setString(2, val.getName());
                st.setLong(3, val.getSalary());
                st.setLong(4, val.getId());

                updated = st.executeUpdate();
            }

            // If update failed, try to insert.
            if (updated == 0) {
                try (PreparedStatement st = conn.prepareStatement(
                    "insert into PERSON (id, orgId,name, salary) values (?, ?, ?,?)")) {
                    st.setLong(1, val.getId());
                    st.setLong(2, val.getOrgId());
                    st.setString(3, val.getName());
                    st.setLong(4, val.getSalary());
                    st.executeUpdate();
                }
            }
        }
        catch (SQLException e) {
            throw new CacheWriterException("Failed to write object [key=" + key + ", val=" + val + ']', e);
        }
    
    
}

共有1个答案

孔志强
2023-03-14

Ignite确实支持事务处理。但有两件事需要考虑:

  1. 您需要将缓存定义为事务性的。默认值为原子,不支持事务
  2. 它当前不支持使用SQL的事务。您需要使用键值API

我不确定您在哪里看到过关于Ignite对事务更快的说法,但一般的原则是,通过将所有内容都保存在内存中,Ignite可以比遗留数据库快得多。

 类似资料:
  • 本文向大家介绍Dubbo支持分布式事务吗?相关面试题,主要包含被问及Dubbo支持分布式事务吗?时的应答技巧和注意事项,需要的朋友参考一下 目前暂时不支持,后续可能采用基于 JTA/XA 规范实现,如以图所示。      

  • 现在我使用的是瘦客户机的ignite ClientCache,我没有找到ClientCache的分布式锁,如果要使用分布式锁,必须使用ignition.start()

  • 问题内容: 库Apache Commons HttpClient是否支持Gzip?我们想在Apache服务器上使用enable gzip压缩来加速客户端/服务器通信(我们有一个php页面,允许我们的Android应用程序与服务器同步文件)。 问题答案: Apache HttpClient 4.1支持现成的内容压缩以及以前认为超出范围的许多其他功能。

  • 我想知道apache cxf 3.1.6是否支持TLS1.2 我查看了Apache的文档,没有发现与TLS1相关的信息。2.http://cxf.apache.org/docs/tls-configuration.html 我还尝试将SecureSocketProtocol设置为TLSv2,但最终在日志中获得了TLSv2 SSLContext不可用。 在这方面的任何帮助都将不胜感激。

  • 问题内容: 谁能说Apache NetBeans 9.0是否支持Java 11,如果可以,那么实现该要求有什么要求? 目前,我可以在NetBeans 9.9中编译并运行Java 11代码,但是用红色下划线标记,错误消息是“找不到符号…”。 以下是我使用的pom.xml文件: 例如,应该如何更改pom文件? 问题答案: 没有NetBeans 9不支持Java 11(仅支持9和10)[ 1 ]。 计划

  • 问题内容: 我搜索了Google,发现了一些矛盾之处。xlwt是否支持xlsx文件(MS Office 2007)。我听说xlwt 0.7.4支持xlsx文件。有谁尝试过使用xlwt 0.7.4编写xlsx文件 这个问题的目的是,如果我需要安装,我没有安装库的权限,我需要提供更多详细信息。我需要用python编写xlsx文件,所以如果有人做过类似的事情将有助于提供更好的信息 我已经查看了这个Wik