Spring amqp 如何在兔子回复中将对象转换为Json?

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

我有两个应用程序使用rabbit相互通信

我需要从app1向app2中的侦听器发送一个对象,在侦听器上进行某些处理后,它会用另一个对象回答我,现在我收到此错误: 未找到类

我在两个应用程序中都使用此兔子配置:

@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);