开发者社区> 问答> 正文

使用rocketmq 消费 message body乱码

public class Consumer implements CommandLineRunner {

private String namesrvAddr = "192.168.186.129:9876";

public void messageListener(){

DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("SilktechDashboardConsumer");

consumer.setNamesrvAddr(namesrvAddr);
try {


    consumer.subscribe("example4", "*");

    consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
    consumer.setConsumeMessageBatchMaxSize(1);

    consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {

        for(Message msg:msgs){

            try {
            	System.out.println(msg.getBody());
            	
				System.out.println("Received message====>"+new String(msg.getBody(),"utf-8"));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
        }
        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
    });

    consumer.start();

} catch (Exception e) {
    e.printStackTrace();
}

}

@Override public void run(String... args) throws Exception { this.messageListener(); }

rocketmq版本:4.4.0 canal版本:1.1.4 flatMessage=false

原提问者GitHub用户shineabel

展开
收起
Java工程师 2023-05-03 16:09:13 278 0
1 条回答
写回答
取消 提交回答
  • flatMessage=false,对应的数据内容是protobuf协议

    原回答者GitHub用户agapple

    2023-05-04 17:58:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RocketMQ Client-GO 介绍 立即下载
RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载