Я пытаюсь подключиться к локально запущенному контейнеру Docker Griddb с помощью клиента Java. Несмотря на настройку правильной конфигурации кластера и учетных данных, я продолжаю получать ошибку JC_BAD_CONNECTION, указывающую тайм -аут при попытке получить обновления уведомлений.
Что я пытаюсь сделать? Я использую официальное изображение Griddb Docker локально и использую Maven для управления зависимостями. Моя цель состоит в том, чтобы установить успешную связь с кластером GridDB и вставить строку в контейнер с именем SampleContainer.
Код: Выделить всё
package org.example;
import com.toshiba.mwcloud.gs.*;
import java.util.*;
public class GridDBConnector {
public static void main(String[] args) throws GSException {
// Set GridDB connection properties
Properties props = new Properties();
props.setProperty("notificationAddress", "239.0.0.1");
props.setProperty("notificationPort", "20000");
props.setProperty("clusterName", "dockerGridDB");
props.setProperty("user", "admin");
props.setProperty("password", "admin");
// Connect to the cluster
GridStore store = GridStoreFactory.getInstance().getGridStore(props);
// Define container schema
ContainerInfo containerInfo = new ContainerInfo();
containerInfo.setName("SampleContainer");
containerInfo.setType(ContainerType.COLLECTION);
containerInfo.setColumnInfoList(Arrays.asList(
new ColumnInfo("id", GSType.INTEGER),
new ColumnInfo("name", GSType.STRING)
));
containerInfo.setRowKeyAssigned(true);
// Create container and insert data
Collection collection = store.putCollection("SampleContainer", containerInfo, false);
Row row = collection.createRow();
row.setInteger(0, 1);
row.setString(1, "gridDb");
collection.put(row);
System.out.println("Data inserted into GridDB successfully!");
}
}
com.github.griddb
gridstore
5.3.0
< /code>
Что я попробовал: < /p>
- Запуск Docker Container < /strong> < /li>
< /ul>
docker run -d --name griddb-server -p 10001:10001 griddbnet/griddb:arm-5.5.0
< /code>
Изменение конфигурации
Я попробовал как включение, так и пропущенное свойства хоста и порта. /> Я создал пользовательскую сеть Docker Bridge и прикрепил к нему контейнер.❯ docker exec -it griddb-server bash
bash-5.1$ ls /var/lib/gridstore/conf/
gridstore.conf gridstore.pid gs_cluster.json gs_node.json password
bash-5.1$ cat /var/lib/gridstore/conf/gs_cluster.json
{
"dataStore":{
"partitionNum":128,
"storeBlockSize":"64KB"
},
"cluster":{
"clusterName":"dockerGridDB",
"replicationNum":2,
"notificationAddress":"239.0.0.1",
"notificationPort":20000,
"notificationInterval":"5s",
"heartbeatInterval":"5s",
"loadbalanceCheckInterval":"180s"
},
"sync":{
"timeoutInterval":"30s"
},
"transaction":{
"notificationAddress":"239.0.0.1",
"notificationPort":31999,
"notificationInterval":"5s",
"replicationMode":0,
"replicationTimeoutInterval":"10s"
},
"sql":{
"notificationAddress":"239.0.0.1",
"notificationPort":41999,
"notificationInterval":"5s"
}
}
< /code>
Просмотр журналов
Следующая ошибка продолжает повторять: < /li>
< /ul>
com.toshiba.mwcloud.gs.common.GSConnectionException: [145028:JC_BAD_CONNECTION] Failed to update by notification (address=/239.0.0.1:20000, reason=Receive timed out)
< /code>
Что я ожидаю /нужна помощь с: < /strong> < /p>
Какую конфигурацию или настройку сети мне не хватает, чтобы включить правильную связь между уведомлением между java -клиентом и контейнером Docker griddb? Режимы для многоадресной рассылки в Docker на macos /linux? java , однако я также прошел различную конфигурацию свойства других. Это не сработало.
Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-timeo