Возможная проблема с кодировкой в ​​Google PubSub - PullRequest
0 голосов
/ 23 апреля 2019

При запуске источника подписки из библиотеки Alpakka PubSub я получил возможные закодированные данные.

@Singleton
class Consumer @Inject()(config: Configuration, credentialsService: google.creds.Service)(implicit actorSystem: ActorSystem) {

  implicit val m: ActorMaterializer = ActorMaterializer.create(actorSystem)
  val logger = Logger(this.getClass)
  val subName: String = config.get[String]("google.pubsub.subname")
  val credentials: Credentials = credentialsService.getCredentials
  val pubSubConfig = PubSubConfig(credentials.projectId, credentials.clientEmail, credentials.privateKey)

  val subSource: Source[ReceivedMessage, NotUsed] = GooglePubSub.subscribe(subName, pubSubConfig)
  val ackSink: Sink[AcknowledgeRequest, Future[Done]] = GooglePubSub.acknowledge(subName, pubSubConfig)

  val computeGraph = Flow[ReceivedMessage].map {
    x =>
      logger.info(x.message.data)
      x
  }

  val ackGraph = Flow.fromFunction((msgs: Seq[ReceivedMessage]) => AcknowledgeRequest(msgs.map(_.ackId).toList))

  subSource
    .via(computeGraph)
    .groupedWithin(10, 5.minutes)
    .via(ackGraph)
    .to(ackSink)
    .run()
}

Я публикую сообщение с консоли PubSub. Я ожидаю, что мое тестовое сообщение появится при публикации test Я получаю dGVzdA==. Это ожидаемый результат? У меня были проблемы с импортом закрытого ключа, и это может быть результатом?

Потребитель охотно связан с Guice.

1 Ответ

3 голосов
/ 23 апреля 2019

Данные, полученные через API REST, будут кодироваться base64 . Я думаю, что библиотека Alpakka Pub / Sub, которая использует REST APIs , неправильно декодирует полученные данные. Похоже, у них также есть библиотека, которая использует GRPC Pub / Sub client в качестве базового уровня, который может не пострадать от этого дефекта? Вы также можете использовать клиентскую библиотеку Cloud Pub / Sub Java из Scala напрямую.

...