Как мне подключить java sdk к qldb? - PullRequest
1 голос
/ 06 марта 2020

Я пробую этот урок

https://docs.aws.amazon.com/qldb/latest/developerguide/getting-started.java.step-2.html, но я не понимаю, как подключиться к qldb с помощью java sdk.

Мне нужно только обновить документ, но эта документация настолько сложна. У кого-нибудь есть идеи? Или что-нибудь для чайников.

public final class ConnectToLedger {
    public static final Logger log = LoggerFactory.getLogger(ConnectToLedger.class);
    public static AWSCredentialsProvider credentialsProvider;
    public static String endpoint = null;
    public static String ledgerName = Constants.LEDGER_NAME;
    public static String region = null;

    public static PooledQldbDriver driver = createQldbDriver();

    private ConnectToLedger() { }

    /**
     * Create a pooled driver for creating sessions.
     *
     * @return The pooled driver for creating sessions.
     */
    public static PooledQldbDriver createQldbDriver() {
        AmazonQLDBSessionClientBuilder builder = AmazonQLDBSessionClientBuilder.standard();
        if (null != endpoint && null != region) {
            builder.setEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region));
        }
        if (null != credentialsProvider) {
            builder.setCredentials(credentialsProvider);
        }
        return PooledQldbDriver.builder()
                .withLedger(ledgerName)
                .withRetryLimit(Constants.RETRY_LIMIT)
                .withSessionClientBuilder(builder)
                .build();
    }

    /**
     * Connect to a ledger through a {@link QldbDriver}.
     *
     * @return {@link QldbSession}.
     */
    public static QldbSession createQldbSession() {
        return driver.getSession();
    }

    public static void main(final String... args) {
        try (QldbSession qldbSession = createQldbSession()) {
            log.info("Listing table names ");
            for (String tableName : qldbSession.getTableNames()) {
                log.info(tableName);
            }
        } catch (QldbClientException e) {
            log.error("Unable to create session.", e);
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Извините, документация сложная. Вот минимальная версия кода, на которую вы ссылались, со всеми настройками и опциями, которые были удалены. Предполагается, что ваша среда настроена на использование правильных AWS региона и учетных данных.

    PooledQldbDriver driver = PooledQldbDriver.builder()
            .withLedger("my-ledger-name")
            .withSessionClientBuilder(AmazonQLDBSessionClientBuilder.standard())
            .build();

    try (QldbSession session = driver.getSession()) {
            session.execute("UPDATE my-table SET my-field = ?", < Ion value here >);
    }

Я хотел бы помочь вам в дальнейшем, но ваш вопрос в его нынешнем виде не дает понять, откуда вы застрял. Например, вы пытались запустить приведенный выше код и, если это так, вы получили ошибку? Если вы уточните свой вопрос с дополнительной информацией или ответите на мой ответ в комментариях, я вернусь.

0 голосов
/ 14 марта 2020

, поэтому я сократил код, потому что в примере требуется больше опыта работы с QLDB sdk java и java.

 public QldbSession getQldbSession(String ledgerName) {
        final AmazonQLDBSessionClientBuilder builder = AmazonQLDBSessionClientBuilder.standard();
        if (null != endpoint && null != region) {
            builder.setEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region));
        }
        if (null != credentialsProvider) {
            builder.setCredentials(credentialsProvider);
        }
        final PooledQldbDriver driver = PooledQldbDriver.builder().withLedger(ledgerName).withRetryLimit(4)
                .withSessionClientBuilder(builder).build();
        return  driver.getSession();
    }
 Result result = null;
        try  {
            final String query = "!query here¡";
            final IonObjectMapper MAPPER = new IonValueMapper(IonSystemBuilder.standard().build());
            final List<IonValue> parameters = new ArrayList<>();
            parameters.add(MAPPER.writeValueAsIonValue("parameter"));
            parameters.add(MAPPER.writeValueAsIonValue("parameter"));
            parameters.add(MAPPER.writeValueAsIonValue("parameter"));
            result = qldbSession.execute(query, parameters);

        } catch (final QldbClientException e) {
            System.out.println("Unable to create session.");
        } catch (final IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }
...