這期內容當中小編將會給大家?guī)碛嘘PRabbitMQ中怎么處理各種消息類型,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司長期為數(shù)千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為泰來企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設計,泰來網(wǎng)站改版等技術服務。擁有十年豐富建站經驗和眾多成功案例,為您定制開發(fā)。
如果發(fā)送的消息類型是map類型,可以通過SerializationUtils.deserialize方法將消息轉換成map類型。
默認情況下RabbitMQ發(fā)送的消息是為字節(jié)碼,有時我們需要發(fā)送JSON格式的消息,則有如下兩種處理方式。
@Autowired
private 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();
}
}
但是在每一個發(fā)送消息的地方都這樣寫就會很繁瑣。
如果規(guī)定了消息的格式為JSON,并使用消息轉換器,則會自動將消息轉化為json格式而不需要每次手動進行轉換。RabbitTemplate默認使用SimpleMessageConverter作為自己的消息轉化器,而SimpleMessageConverter并不能滿足json消息的需求。我們可以使用Jackson2JsonMessageConverter作為默認的消息轉換器。
為RabbitTemplate配置MessageConverter:
@Configuration
public 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類的構造函數(shù)接收byte[]類型的消息數(shù)據(jù),獲得jsonStr后可以轉換成其它類,然后再進行相關操作。
這里@RabbitListener注解在方法上,如果類中有多個@RabbitListener(queues = TopicRabbitmqConfig.EVENT_MSG_QUEUE_NAME)注解的方法,測試的結果是輪流的調用。
注意,這里RabbitListener注解在類上,方法中通過@RabbitHandler注解標識。
接
spring boot與rabbitmq
三豐,公眾號:soft張三豐spring boot與RabbitMQ
打開 RabbitMQ web 控制臺,也可以看到剛才我們在代碼里面配置的交換器和隊列,以及綁定信息。
查看交換器的詳情
查看隊列
上述就是小編為大家分享的RabbitMQ中怎么處理各種消息類型了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。