Android-приложение отключается от RabbitMQ после использования метода активности - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь внедрить RabbitMQ в мое приложение для Android, но у меня проблема с тем, что внутри метода handleDelivery, когда я пытаюсь вызвать внешнюю функцию, соединение теряется.

private fun initRabbitmq () {
    factory.setUri("someURI")
    subscribeThread = Thread(object : Runnable {
        override fun run() {
            val connection: Connection = factory.newConnection()
            val channel: Channel = connection.createChannel()
            val consumer: DefaultConsumer
            consumer = object : DefaultConsumer(channel) {
                override fun handleDelivery(consumerTag: String?, envelope: Envelope?, properties: AMQP.BasicProperties?, body: ByteArray?) {
                    super.handleDelivery(consumerTag, envelope, properties, body)
                    val msg = String(body!!, Charsets.UTF_8)
                    Log.e(TAG, "RabbitMQ - $msg")
                    showRabbitMessage(msg)
                }
            }
            channel.basicConsume("defenders_test", true, consumer)
        }
    })
    subscribeThread.start()
}

Когда выполняется функция showRabbitMessage(), соединение теряется, но если я удаляю его и смотрю журналы, сообщения отображаются в консоли.

Есть идеи, как вывести сообщение из темы? Спасибо заранее!

1 Ответ

0 голосов
/ 30 августа 2018

Проблема заключалась в том, что мне пришлось перенести объект из потока -> наружу, и в Android это можно сделать с помощью объекта Handle и метода handleMessage().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...