簡體   English   中英

Spring Boot JMS MarshallingMessageConverter的回復

[英]Spring Boot JMS MarshallingMessageConverter in replies

我有一個JMS偵聽器,類似於在這里完成的偵聽器:

使用JMS模板和Spring Boot發送和接收同步消息

它接收XML有效負載。 但與那個不同的是,我還想返回一個答復。 如果我返回一個String,它可以正常工作,但是當我處理消息有效負載時,我想返回一個JAXB對象。

但是,如果我返回一條消息,Spring會嘗試使用SimpleMessageConverter轉換對象。

轉換回復有效負載時,如何配置要使用的MarshallingMessageConverter?

我必須配置DefaultJmsListenerContainerFactory的消息轉換器。

但是很奇怪,我已經在其中有一個用於DefaultMessageHandlerMethodFactory和JmsMessagingTemplate的MarshallingMessageConverter,它來自另一個Java包(org.springframework.messaging.converter.MarshallingMessageConverter)。

@Bean
public JmsListenerContainerFactory<?> jmsListenerFactory(ConnectionFactory connectionFactory,
    DefaultJmsListenerContainerFactoryConfigurer configurer)
{
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setErrorHandler(errorHandler());
    factory.setMessageConverter(jmsMarshallingMessageConverter());  // !!!!

    configurer.configure(factory, connectionFactory);

    return factory;
}

@Bean
public org.springframework.jms.support.converter.MarshallingMessageConverter jmsMarshallingMessageConverter()
{
    Jaxb2Marshaller marshaller = marshaller();

    org.springframework.jms.support.converter.MarshallingMessageConverter converter =
        new org.springframework.jms.support.converter.MarshallingMessageConverter();
    converter.setMarshaller(marshaller);
    converter.setUnmarshaller(marshaller);
    converter.setTargetType(MessageType.TEXT);

    return converter;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM