Spring amqp 如何在兔子回复中将对象转换为Json?
我有两个应用程序使用rabbit相互通信 我需要从app1向app2中的侦听器发送一个对象,在侦听器上进行某些处理后,它会用另一个对象回答我,现在我收到此错误: 未找到类 我在两个应用程序中都使用此兔子配置:Spring amqp 如何在兔子回复中将对象转换为Json?,spring-amqp,spring-rabbit,Spring Amqp,Spring Rabbit,我有两个应用程序使用rabbit相互通信 我需要从app1向app2中的侦听器发送一个对象,在侦听器上进行某些处理后,它会用另一个对象回答我,现在我收到此错误: 未找到类 我在两个应用程序中都使用此兔子配置: @Configuration public class RabbitConfiguration { public final static String EXCHANGE_NAME = "paymentExchange"; public final static Str
@Configuration
public class RabbitConfiguration {
public final static String EXCHANGE_NAME = "paymentExchange";
public final static String EVENT_ROUTING_KEY = "eventRoute";
public final static String PAYEMNT_ROUTING_KEY = "paymentRoute";
public final static String QUEUE_EVENT = EXCHANGE_NAME + "." + "event";
public final static String QUEUE_PAYMENT = EXCHANGE_NAME + "." + "payment";
public final static String QUEUE_CAPTURE = EXCHANGE_NAME + "." + "capture";
@Bean
public List<Declarable> ds() {
return queues(QUEUE_EVENT, QUEUE_PAYMENT);
}
@Autowired
private ConnectionFactory rabbitConnectionFactory;
@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(rabbitConnectionFactory);
}
@Bean
public DirectExchange exchange() {
return new DirectExchange(EXCHANGE_NAME);
}
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate r = new RabbitTemplate(rabbitConnectionFactory);
r.setExchange(EXCHANGE_NAME);
r.setChannelTransacted(false);
r.setConnectionFactory(rabbitConnectionFactory);
r.setMessageConverter(jsonMessageConverter());
return r;
}
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
private List<Declarable> queues(String... nomes) {
List<Declarable> result = new ArrayList<>();
for (int i = 0; i < nomes.length; i++) {
result.add(newQueue(nomes[i]));
if (nomes[i].equals(QUEUE_EVENT))
result.add(makeBindingToQueue(nomes[i], EVENT_ROUTING_KEY));
else
result.add(makeBindingToQueue(nomes[i], PAYEMNT_ROUTING_KEY));
}
return result;
}
private static Binding makeBindingToQueue(String queueName, String route) {
return new Binding(queueName, DestinationType.QUEUE, EXCHANGE_NAME, route, null);
}
private static Queue newQueue(String nome) {
return new Queue(nome);
}
}
并使用对对象的强制转换等待响应
这种通信是在使用同一个rabbit服务器的两个不同应用程序之间进行的
我怎样才能解决这个问题
我希望rabbit在发送操作中将消息转换为json,在回复操作中将消息转换为json,因此我创建了与回复json相对应的对象。请显示侦听器的配置。您应该确保那里的ListenerContainer附带了Jackson2JsonMessageConverter,以便将_uTypeID_uuu头与回复一起带回
另请参阅Spring AMQP JSON以获得一些帮助。请显示侦听器的配置。您应该确保那里的ListenerContainer附带了Jackson2JsonMessageConverter,以便将_uTypeID_uuu头与回复一起带回
另请参阅Spring AMQP JSON以获取一些帮助。这是我的侦听器配置:@Bean public SimpleRableBitListenerContainerFactory rabbitListenerContainerFactory{SimpleRableBitListenerContainerFactory=new SimpleRableBitListenerContainerFactory;factory.setConnectionFactoryrabbitConnectionFactory;factory.setMessageConverterjsonMessageConverter;返回工厂;}这是我对侦听器的配置:@Bean public SimpleRableBitListenerContainerFactory rabbitListenerContainerFactory{SimpleRableBitListenerContainerFactory=new SimpleRableBitListenerContainerFactory;factory.setConnectionFactoryrabbitConnectionFactory;factory.setMessageConverterjsonMessageConverter;返回工厂;}
String response = (String) rabbitTemplate.convertSendAndReceive(RabbitConfiguration.EXCHANGE_NAME,
RabbitConfiguration.PAYEMNT_ROUTING_KEY, domainEvent);