Java调用rabbitmq监听_RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化

本文详细介绍了在Java中使用RabbitMQ时,如何通过@RabbitListener和@RabbitHandler进行消息监听,以及如何处理消息的序列化问题,包括SimpleMessageConverter和Jackson2JsonMessageConverter的使用。此外,还讲解了如何处理消息的headers和payload,并讨论了Java序列化与JSON序列化的优缺点和应用场合。
摘要由CSDN通过智能技术生成

添加 @RabbitListener 注解来指定某方法作为消息消费的方法,例如监听某 Queue 里面的消息

MessageConvert涉及网络传输的应用序列化不可避免,发送端以某种规则将消息转成 byte 数组进行发送,接收端则以约定的规则进行 byte[] 数组的解析

RabbitMQ 的序列化是指 Message 的 body 属性,即我们真正需要传输的内容,RabbitMQ 抽象出一个 MessageConvert 接口处理消息的序列化,其实现有 SimpleMessageConverter(默认)、Jackson2JsonMessageConverter 等

当调用了 convertAndSend 方法时会使用 MessageConvert 进行消息的序列化

SimpleMessageConverter 对于要发送的消息体 body 为 byte[] 时不进行处理,如果是 String 则转成字节数组,如果是 Java 对象,则使用 jdk 序列化将消息转成字节数组,转出来的结果较大,含class类名,类相应方法等信息。因此性能较差

当使用 RabbitMQ 作为中间件时,数据量比较大,此时就要考虑使用类似 Jackson2JsonMessageConverter 等序列化形式以此提高性能

@RabbitListener 用法使用 @RabbitListener 注解标记方法,当监听到队列 debug 中有消息时则会进行接收并处理@RabbitListener(queues = "debug")public void processMessage1(Message bytes) {

System.out.println(new String(bytes));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值