v1 發布 protobuf 結構定義類型的訊息 (已淘汰)
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
(已淘汰) 發布 protobuf 結構定義類型的訊息
程式碼範例
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],[],[],[],null,["# v1 Publish messages of protobuf schema type (DEPRECATED)\n\n(DEPRECATED) Publish messages of protobuf schema type\n\nCode sample\n-----------\n\n### Go\n\n\nBefore trying this sample, follow the Go setup instructions in the\n[Pub/Sub quickstart using\nclient libraries](/pubsub/docs/quickstart-client-libraries).\n\n\nFor more information, see the\n[Pub/Sub Go API\nreference documentation](https://godoc.org/cloud.google.com/go/pubsub).\n\n\nTo authenticate to Pub/Sub, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n import (\n \t\"context\"\n \t\"fmt\"\n \t\"io\"\n\n \t\"cloud.google.com/go/pubsub\"\n \tstatepb \"github.com/GoogleCloudPlatform/golang-samples/internal/pubsub/schemas\"\n \t\"google.golang.org/protobuf/encoding/protojson\"\n \t\"google.golang.org/protobuf/proto\"\n )\n\n func publishProtoMessages(w io.Writer, projectID, topicID string) error {\n \t// projectID := \"my-project-id\"\n \t// topicID := \"my-topic\"\n \tctx := context.Background()\n \tclient, err := pubsub.https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsub/latest/index.html#cloud_google_com_go_pubsub_Client_NewClient(ctx, projectID)\n \tif err != nil {\n \t\treturn fmt.Errorf(\"pubsub.NewClient: %w\", err)\n \t}\n\n \tstate := &statepb.State{\n \t\tName: \"Alaska\",\n \t\tPostAbbr: \"AK\",\n \t}\n\n \t// Get the topic encoding type.\n \tt := client.Topic(topicID)\n \tcfg, err := t.Config(ctx)\n \tif err != nil {\n \t\treturn fmt.Errorf(\"topic.Config err: %w\", err)\n \t}\n \tencoding := cfg.SchemaSettings.https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsub/latest/apiv1/pubsubpb.html#cloud_google_com_go_pubsub_apiv1_pubsubpb_Encoding\n\n \tvar msg []byte\n \tswitch encoding {\n \tcase pubsub.https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsub/latest/index.html#cloud_google_com_go_pubsub_EncodingUnspecified_EncodingJSON_EncodingBinary:\n \t\tmsg, err = proto.Marshal(state)\n \t\tif err != nil {\n \t\t\treturn fmt.Errorf(\"proto.Marshal err: %w\", err)\n \t\t}\n \tcase pubsub.https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsub/latest/index.html#cloud_google_com_go_pubsub_EncodingUnspecified_EncodingJSON_EncodingBinary:\n \t\tmsg, err = protojson.Marshal(state)\n \t\tif err != nil {\n \t\t\treturn fmt.Errorf(\"protojson.Marshal err: %w\", err)\n \t\t}\n \tdefault:\n \t\treturn fmt.Errorf(\"invalid encoding: %v\", encoding)\n \t}\n\n \tresult := t.Publish(ctx, &pubsub.Message{\n \t\tData: msg,\n \t})\n \t_, err = result.Get(ctx)\n \tif err != nil {\n \t\treturn fmt.Errorf(\"result.Get: %w\", err)\n \t}\n \tfmt.Fprintf(w, \"Published proto message with %#v encoding: %s\\n\", encoding, string(msg))\n \treturn nil\n }\n\n### Ruby\n\n\nBefore trying this sample, follow the Ruby setup instructions in the\n[Pub/Sub quickstart using\nclient libraries](/pubsub/docs/quickstart-client-libraries).\n\n\nFor more information, see the\n[Pub/Sub Ruby API\nreference documentation](https://googleapis.dev/ruby/google-cloud-pubsub/latest/Google/Cloud/PubSub.html).\n\n\nTo authenticate to Pub/Sub, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n # topic_id = \"your-topic-id\"\n\n pubsub = Google::Cloud::https://cloud.google.com/ruby/docs/reference/google-cloud-pubsub/latest/Google-Cloud.html.new\n\n topic = pubsub.topic topic_id\n\n state = Utilities::StateProto.new name: \"Alaska\", post_abbr: \"AK\"\n\n if topic.message_encoding_binary?\n topic.publish Utilities::StateProto.encode(state)\n puts \"Published binary-encoded protobuf message.\"\n elsif topic.message_encoding_json?\n topic.publish Utilities::StateProto.encode_json(state)\n puts \"Published JSON-encoded protobuf message.\"\n else\n raise \"No encoding specified in #{topic.name}.\"\n end\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=pubsub)."]]