Я столкнулся с проблемой при получении сообщения от RabbitMQ. Я отправляю сообщение, как показано ниже
HashMap<Object, Object> senderMap=new HashMap<>();
senderMap.put("STATUS", "SUCCESS");
senderMap.put("EXECUTION_START_TIME", new Date());
rabbitTemplate.convertAndSend(Constants.ADAPTOR_OP_QUEUE,senderMap);
Если мы увидим в RabbitMQ, мы получим полностью квалифицированный тип.
В текущем сценарии у нас есть n производителей для одного и того же потребителя. Если я использую какой-либо картограф, это приведет к исключению. Как я могу отправить сообщение, чтобы оно не содержало type_id, и я мог бы получить сообщение как объект сообщения, а позже я мог бы привязать его к своему настраиваемому объекту в получателе.
Я получаю сообщение, подобное приведенному ниже. Не могли бы вы сообщить мне, как использовать Jackson2MessageConverter, чтобы это сообщение напрямую связывалось с моим Object / HashMap со стороны получателя. Также я удалил Type_ID у отправителя.
Как выглядит сообщение в RabbitMQ
приоритет: 0 режим_доставки: 2 заголовка:
ContentTypeId: java.lang.Object KeyTypeId: java.lang.Object content_encoding: UTF-8 content_type: application / json { "Execution_start_time": 1473747183636, "status": "SUCCESS"}
@Component
public class AdapterOutputHandler {
private static Logger logger = Logger.getLogger(AdapterOutputHandler.class);
@RabbitListener(containerFactory="adapterOPListenerContainerFactory",queues=Constants.ADAPTOR_OP_QUEUE)
public void handleAdapterQueueMessage(HashMap<String,Object> message){
System.out.println("Receiver:::::::::::"+message.toString());
}
}
Связь
@Bean(name="adapterOPListenerContainerFactory")
public SimpleRabbitListenerContainerFactory adapterOPListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
Jackson2JsonMessageConverter messageConverter = new Jackson2JsonMessageConverter();
DefaultClassMapper classMapper = new DefaultClassMapper();
messageConverter.setClassMapper(classMapper);
factory.setMessageConverter(messageConverter);
}
Исключение
Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert Message content. Could not resolve __TypeId__ in header and no defaultType provided
at org.springframework.amqp.support.converter.DefaultClassMapper.toClass(DefaultClassMapper.java:139)
Я не хочу использовать __TYPE__ID от отправителя, потому что они являются несколькими отправителями для одной очереди и только одним потребителем.
priority: 0 delivery_mode: 2 __TypeId__: com.diff.approach.JobListenerDTO** content_encoding: UTF-8 content_type: application/json
- person BIndu_Madhav   schedule 12.09.2016