Как использовать библиотеку Google Pubsub со Scala - PullRequest
0 голосов
/ 02 июля 2018

Я пишу клиент pubsub Google, используя Java API, клиент написан на Scala. Проблема этого кода в том, что он не идиоматичен в scala с использованием null и while true loop

 val receiver = new MessageReceiver() {
      // React to each received message
      // If there are any
      override def receiveMessage(message: PubsubMessage, consumer: AckReplyConsumer): Unit = { // handle incoming message, then ack/nack the received message
        System.out.println("Id : " + message.getMessageId)
        System.out.println("Data : " + message.getData.toStringUtf8)
        throw new RuntimeException("This is just an exception")
        consumer.ack()
      }
    }

var subscriber: ApiService = null
    try { // Create a subscriber for "my-subscription-id" bound to the message receiver
      var subscriber = Subscriber.newBuilder(subscriptionName, receiver).build
      subscriber.startAsync
      // ...
    } finally {
      // stop receiving messages
      if (subscriber != null) subscriber.stopAsync()
    }
while (true) {
    Thread.sleep(1000)
}

Как мне преобразовать этот код, чтобы использовать Scala's Future или cats IO

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Существует клиент Pub / Sub Scala в стиле cats - https://github.com/hyjay/fs2-google-cloud-pubsub

Отказ от ответственности: я автор.

0 голосов
/ 02 июля 2018

Рассматривали ли вы использование Lightbend Alpakka Google Cloud Pub / Sub разъем? https://developer.lightbend.com/docs/alpakka/current/google-cloud-pub-sub.html

Работает очень хорошо и идиоматично

...