2017-01-09 57 views
0

有沒有辦法在Grails 3控制器或服務中使用RabbitMq,就好像消費者是可觀察對象? 我實際的代碼是類似的東西將RabbitMQ隊列作爲Grails 3中的可觀察對象使用RxJava

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

相關問題