Я собрал тест java. Он помещает сообщение в очередь и возвращает его как строку. То, что я пытаюсь достичь, - это преобразовать его в java-объект SignUpDto. Я поставил перед собой вопрос как можно больше вопросов.rabbitmq потребляет сообщение json и преобразовывается в объект Java
Вопрос:
Как изменить ниже тест, чтобы преобразовать в объект?
SignUpClass
public class SignUpDto {
private String customerName;
private String isoCountryCode;
... etc
}
Применение - Config класса
@Configuration
public class Application {
@Bean
public ConnectionFactory connectionFactory() {
return new CachingConnectionFactory("localhost");
}
@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(connectionFactory());
}
@Bean
public RabbitTemplate rabbitTemplate() {
// updated with @GaryRussels feedback
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory());
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
return rabbitTemplate;
}
@Bean
public Queue myQueue() {
return new Queue("myqueue");
}
}
Тест
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Application.class})
public class TestQueue {
@Test
public void convertMessageIntoObject(){
ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
AmqpTemplate template = context.getBean(AmqpTemplate.class);
String jsonString = "{ \"customerName\": \"TestName\", \"isoCountryCode\": \"UK\" }";
template.convertAndSend("myqueue", jsonString);
String foo = (String) template.receiveAndConvert("myqueue");
// this works ok
System.out.println(foo);
// How do I make this convert
//SignUpDto objFoo = (SignUpDto) template.receiveAndConvert("myqueue");
// objFoo.toString()
}
}
Как настроить RabbitTemplate с помощью Jackson2JsonMessageConverter? –
См. Отредактированный ответ. –
Я не уверен, как этот xml отображает конфигурацию java? –