springboot里发布队列消息
为了兼容性和可读性更好,我们一般使用json字符串做为数据载体。
1 public void decreaseCallMonitor(CallMonitorInfo callMonitorInfo) throws Exception { 2 try { 3 rabbitTemplate.convertAndSend( 4 AmqpConfig.DATA_COLLECTION_EXCHANGE, 5 AmqpConfig.CALLMONITOR_DECREASE_BINDING, 6 objectMapper.writeValueAsString(callMonitorInfo) 7 ); 8 logger.debug("Enter {},message:{}", "decreaseCallMonitor", callMonitorInfo.toString()); 9 10 } catch (Exception ex) { 11 logger.error("MQ.decreaseCallMonitor.error", ex); 12 } 13 }
springboot里订阅消息
1 @RabbitHandler 2 @RabbitListener(queues = AmqpConfig.CUSTOMER_TERMINATE_BINDING) 3 public void customerTerminate(String data) { 4 try { 5 TerminateDTO terminateDTO = objectMapper.readValue(data, TerminateDTO.class); 6 customerBusinessInfoMapper.updateCustomer_business_info(ImmutableMap.of( 7 "status", EnumCustomerStatus.TERMINATE.getCode(), 8 "customerId", terminateDTO.getCustomerId() 9 )); 10 } catch (Exception ex) { 11 logger.error("解约同步异常", ex); 12 } 13 }
通过UI15672手动发消息要注意的地方
-
添加properties,声明它是utf-8及文本类型
content_encoding:utf-8 content_type:text/plain
-
json字符串需要压缩,把回车换行都去掉,否则会出错
{"signSalespersonId":1001,"signSalesperson":"mq","signTime":null,"customerId":501806811767111700}
以上两点注意好,手动发布队列就没有问题了!