Spring RabbitMQ教程-处理字节数组

时间:2019-07-19 01:43:37

标签: spring kotlin rabbitmq

我刚刚开始使用Spring并运行RabbitMQ tutorial

因此,代码发送并接收了一条消息,但是,当我尝试在ManagementUI中手动发布消息时,我总是收到错误Failed to invoke target method 'receiveMessage' with argument type = [class [B], value = [{[B@66d2e37b}]

阅读文档,我已经看到了:

  

从版本1.5.7、1.6.11、1.7.4和2.0.0开始,如果消息主体是序列化的Serializable Java对象,则在执行toString()操作时,它不再被反序列化(默认情况下)(例如在日志消息中)。这是为了防止不安全的反序列化。默认情况下,仅反序列化java.util和java.lang类。要恢复到以前的行为,可以通过调用Message.addWhiteListPatterns(...)添加允许的类/包模式。支持一个简单的通配符,例如com.something。* .MyClass。日志消息中的byte []表示无法反序列化的实体。

教程中的receiveMessage方法看起来像这样:

    fun receiveMessage(message: String) {
        println("Received <$message>")
    }

但是要修复它,我必须使用以下代码:

    fun <T> receiveMessage(message: T) {
        if (message is ByteArray) {
            val charset = Charsets.UTF_8
            println(message.toString(charset))
        } else {
            println("Received <$message>")
        }

    }

成为所有Kotlin和Spring的新手。我只想检查这是否是处理这种情况的有效方法?

任何帮助将不胜感激。

谢谢。

0 个答案:

没有答案