2017-01-09 13 views
0

Grails 3コントローラまたはサービスでRabbitMqをConsumerがObservableであるかのように消費する方法はありますか? 私の実際のコードは、そのRxJavaのGrails 3でObservableとしてRabbitMQキューを使用する

def consumer 
rx.stream { Subscriber subscriber -> 
    consumer = new DefaultConsumer(channel) { 
     @Override 
     void handleDelivery(String consumerTag, Envelope envelope, 
          AMQP.BasicProperties properties, byte[] body) throws IOException { 

      String message = new String(body, "UTF-8")      
      subscriber.onNext(rx.render(message)) 

     } 
    } 
    channel.basicConsume(queueName, true, consumer) 
} 

のようなものですが、私は本当に実装のこの種好きではないと私はRxのパラダイムに付着すると良いだろうと思います。

答えて

0

コールバックベースのモデルではなく、RabbitMQ側でプルベースのモデルを使用するようにコードを変更できますか?はいの場合は、SyncOnSubscribeを使用して簡単にメッセージを取得できます。

+0

お返事いただきありがとうございますが、私は外部デバイスからプッシュされたほぼリアルタイムのストリームを管理する必要があるため、プルベースのモデルは実際には選択肢ではないと思います。私はキューからメッセージを引き出すためにクライアントのポーリングや無限ループに頼ることはできないと思います。 – markomannux

関連する問題