Я использую клиентскую библиотеку хранилища данных Google Cloud для Java, чтобы получить доступ к облачному хранилищу данных.Google Datastore Emulator с использованием Java (не используя GAE)
Примечание: Я не использую App Engine для развертывания приложения; просто запуская локальное приложение для целей разработки.
Следуя примеру, я могу читать/писать в облачный хранилище данных.
Datastore datastore = DatastoreOptions.defaultInstance().service();
KeyFactory keyFactory = datastore.newKeyFactory().setKind("MyKind");
Key key = keyFactory.newKey();
Entity entity = datastore.get(key);
Я хочу, чтобы иметь возможность писать вместо локального экземпляра эмулятора хранилища данных. Следующее руководство here, я бегу gcloud beta emulators datastore start
. Это проявляется в моем терминале:
C:\Users\User>gcloud beta emulators datastore start
WARNING: Reusing existing data in [C:\Users\User\AppData\Roaming\gcloud\emulators\datastore].
Executing: cmd /c C:\Users\User\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\cloud-datastore-emulator\cloud_datastore_emulator.cmd start --host=localhost --port=8964 --store_on_disk=True --consistency=0.9 --allow_remote_shutdown C:\Users\User\AppData\Roaming\gcloud\emulators\datastore
[datastore] Oct 31, 2016 11:37:27 AM com.google.cloud.datastore.emulator.CloudDatastore$FakeDatastoreAction$7 apply
[datastore] INFO: Provided --allow_remote_shutdown to start command which is no longer necessary.
[datastore] Oct 31, 2016 11:37:27 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub <init>
[datastore] INFO: Local Datastore initialized:
[datastore] Type: High Replication
[datastore] Storage: C:\Users\User\AppData\Roaming\gcloud\emulators\datastore\WEB-INF\appengine-generated\local_db.bin
[datastore] Oct 31, 2016 11:37:28 AM io.grpc.internal.ManagedChannelImpl <init>
[datastore] INFO: [[email protected]] Created with target localhost:8964
[datastore] Oct 31, 2016 11:37:28 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub load
[datastore] INFO: The backing store, C:\Users\User\AppData\Roaming\gcloud\emulators\datastore\WEB-INF\appengine-generated\local_db.bin, does not exist. It will be created.
[datastore] Oct 31, 2016 11:37:28 AM io.gapi.emulators.netty.NettyUtil applyJava7LongHostnameWorkaround
[datastore] INFO: Unable to apply Java 7 long hostname workaround.
[datastore] API endpoint: http://localhost:8964
[datastore] If you are using a library that supports the DATASTORE_EMULATOR_HOST environment variable, run:
[datastore]
[datastore] export DATASTORE_EMULATOR_HOST=localhost:8964
[datastore]
[datastore] Dev App Server is now running.
[datastore]
я открыть другой терминал и установить переменные среды:
C:\Users\User>gcloud beta emulators datastore env-init > set_vars.cmd && set_vars.cmd
C:\Users\User>set DATASTORE_DATASET=my-project-id
C:\Users\User>set DATASTORE_EMULATOR_HOST=localhost:8964
C:\Users\User>set DATASTORE_EMULATOR_HOST_PATH=localhost:8964/datastore
C:\Users\User>set DATASTORE_HOST=http://localhost:8964
C:\Users\User>set DATASTORE_PROJECT_ID=my-project-id
Я бегу мое приложение и сделать REST вызов к сообщению или восстановить юридическое лицо, но это только чтение/запись против Cloud Datastore. Заголовок localhost:8964/datastore
дает мне Not Found
. Хотя запуск эмулятора говорит мне, что он создал файл local_db.bin
, папка, предположительно содержащая его, пуста. Я также хочу держаться подальше от использования LocalDatastoreHelper, чтобы получить доступ к локальному эмулятору. Есть ли способ достичь использования gcloud?
Есть ли способ просмотра данных из .bin-файла? – Kookz
Вы должны уметь видеть текстовые фрагменты (в моем примере, Hello World!) Ваших данных, если вы откроете файл в текстовом редакторе, но вы увидите другие байты, которые не переводятся в текст. –
Чтобы уточнить, я запускаю эмулятор, используя «gcloud beta emulators datastore start», обратите внимание на любой порт, который он использует, и укажите этот порт, когда я создаю экземпляр Datastore? – Kookz