Spring AMQP 从消息转换

Spring AMQP Converting from a Message

根据documentation 使用@RabbitListener注解配置监听器时

the inferred type information is added to the MessageProperties; this allows the converter to convert to the argument type of the target method

所以我可以使用自定义 pojo 进行转换。

我的问题 - 当基于 xml 的策略用于配置侦听器时,它是否以相同的方式工作:<rabbit:listener-container> <rabbit:listener ref=...

否;使用更简单的 MessageListenerAdapter.

当使用那个表单时,如果消息中没有类型信息headers,你必须配置消息转换器来告诉它你想把数据转换成什么类型​​...

<rabbit:listener-container message-converter="jsonConverter">
    <rabbit:listener ref="listener" method="handleFoo" queue-names="input.foo" />
</rabbit:listener-container>

<bean id="listener" class="com.example.Listener" />

<bean id="jsonConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter">
    <property name="classMapper">
        <bean class="org.springframework.amqp.support.converter.DefaultClassMapper">
            <property name="defaultType" value="com.example.Foo" />
        </bean>
    </property>
</bean>

public class Listener {

    public void handleFoo(Foo foo) {
        System.out.println(foo);
    }

}

Foo [bar=bar]
Foo [bar=bar]

来自

{ "bar" : "bar" }

content_type: application/json