我有一个服务使用不同的 RabbitMQ 队列的用例。
- 在其中一个队列上有 JSON 编码数据,其中 content_type 标头设置为
application/json
- 还有第二个队列,正在消费二进制数据,content_type 是
application/octet-stream
在配置中有一个 MessageConverter 定义:
@Bean
public MessageConverter jsonMessageConverter(){
return new Jackson2JsonMessageConverter();
}
消费方法是这样声明的:
@RabbitListener(queues = "rpc-device-cmd")
public byte[] rpcCommand(byte[] request) throws IOException, ConfigurationException { .... }
我的问题是 Jackson2JsonMessageConverter 抱怨application/octet-stream
标头(
Could not convert incoming message with content-type application/octet-stream 'json' keyword missing.
),更糟糕的是,它正在将上述方法的 byte[] 响应编码为 JSON 和 base64。
问题:
如何确保 JSON 转换器不会触及我的 byte[] 响应并忽略具有“非 json”content_type 的消息?