温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

RabbitMQ中怎么处理各种消息类型

发布时间:2021-08-10 17:48:57 来源:亿速云 阅读:234 作者:Leah 栏目:大数据

这期内容当中小编将会给大家带来有关RabbitMQ中怎么处理各种消息类型,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Map消息

RabbitMQ中怎么处理各种消息类型

如果发送的消息类型是map类型,可以通过SerializationUtils.deserialize方法将消息转换成map类型。

字符串类型(含json格式)

RabbitMQ中怎么处理各种消息类型

默认情况下RabbitMQ发送的消息是为字节码,有时我们需要发送JSON格式的消息,则有如下两种处理方式。

手动转换成json

@Autowiredprivate ObjectMapper objectMapper;
public void sendOrder(Order order) {    try {        String orderJson = objectMapper.writeValueAsString(order);        Message message = MessageBuilder                            .withBody(orderJson.getBytes())                            .setContentType(MessageProperties.CONTENT_TYPE_JSON)                            .build();        this.rabbitTemplate.convertAndSend(RabbitConfig.QUEUE_ORDERS, message);    } catch (JsonProcessingException e) {        e.printStackTrace();    }}

但是在每一个发送消息的地方都这样写就会很繁琐。

使用MessageConvert自动转换为json

如果规定了消息的格式为JSON,并使用消息转换器,则会自动将消息转化为json格式而不需要每次手动进行转换。RabbitTemplate默认使用SimpleMessageConverter作为自己的消息转化器,而SimpleMessageConverter并不能满足json消息的需求。我们可以使用Jackson2JsonMessageConverter作为默认的消息转换器。

为RabbitTemplate配置MessageConverter:

@Configurationpublic class RabbitConfig {
   @Bean    public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory) {        final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);        rabbitTemplate.setMessageConverter(jsonMessageConverter());        return rabbitTemplate;    }
   @Bean    public Jackson2JsonMessageConverter jsonMessageConverter() {        return new Jackson2JsonMessageConverter();    }}

通过String类的构造函数接收byte[]类型的消息数据,获得jsonStr后可以转换成其它类,然后再进行相关操作。

这里@RabbitListener注解在方法上,如果类中有多个@RabbitListener(queues = TopicRabbitmqConfig.EVENT_MSG_QUEUE_NAME)注解的方法,测试的结果是轮流的调用。

另一种接收方式

RabbitMQ中怎么处理各种消息类型

注意,这里RabbitListener注解在类上,方法中通过@RabbitHandler注解标识。

spring boot与rabbitmq

三丰,公众号:soft张三丰spring boot与RabbitMQ  

控制台

打开 RabbitMQ web 控制台,也可以看到刚才我们在代码里面配置的交换器和队列,以及绑定信息。

RabbitMQ中怎么处理各种消息类型

查看交换器的详情

RabbitMQ中怎么处理各种消息类型

查看队列

RabbitMQ中怎么处理各种消息类型


上述就是小编为大家分享的RabbitMQ中怎么处理各种消息类型了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI