700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Spring Boot集成RabbitMQ发送接收JSON

Spring Boot集成RabbitMQ发送接收JSON

时间:2020-01-08 07:43:29

相关推荐

Spring Boot集成RabbitMQ发送接收JSON

ObjectMapper

最简单发送JSON数据的方式是把对象使用ObjectMapper等JSON工具类把对象转换为JSON格式,然后发送。如下:

@AutowiredprivateObjectMapperobjectMapper;publicvoidsendOrder(Orderorder){try{StringorderJson=objectMapper.writeValueAsString(order);Messagemessage=MessageBuilder.withBody(orderJson.getBytes()).setContentType(MessageProperties.CONTENT_TYPE_JSON).build();this.rabbitTemplate.convertAndSend(RabbitConfig.QUEUE_ORDERS,message);}catch(JsonProcessingExceptione){e.printStackTrace();}}

发送JSON消息

但是在每一个发送消息的地方都这样写就会很繁琐。如果规定了消息的格式为JSON,可以使用org.springframework.amqp.support.converter.Jackson2JsonMessageConverter作为默认的消息转换器。

在RabbitConfig添加转换器:

@ConfigurationpublicclassRabbitConfig{......@BeanpublicRabbitTemplaterabbitTemplate(finalConnectionFactoryconnectionFactory){finalRabbitTemplaterabbitTemplate=newRabbitTemplate(connectionFactory);rabbitTemplate.setMessageConverter(producerJackson2MessageConverter());returnrabbitTemplate;}@BeanpublicJackson2JsonMessageConverterproducerJackson2MessageConverter(){returnnewJackson2JsonMessageConverter();}}

接收JSON消息

为了接收JSON数据,我们应该通过实现RabbitListenerConfigurer来定制RabbitMQ配置。

@ConfigurationpublicclassRabbitConfigimplementsRabbitListenerConfigurer{......@OverridepublicvoidconfigureRabbitListeners(RabbitListenerEndpointRegistrarregistrar){registrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory());}@BeanMessageHandlerMethodFactorymessageHandlerMethodFactory(){DefaultMessageHandlerMethodFactorymessageHandlerMethodFactory=newDefaultMessageHandlerMethodFactory();messageHandlerMethodFactory.setMessageConverter(consumerJackson2MessageConverter());returnmessageHandlerMethodFactory;}@BeanpublicMappingJackson2MessageConverterconsumerJackson2MessageConverter(){returnnewMappingJackson2MessageConverter();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。