Spring AMQP从消息转换

时间:2018-01-25 12:38:34

标签: spring-amqp

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

  

将推断的类型信息添加到MessageProperties中;这允许转换器转换为目标方法的参数类型

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

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

1 个答案:

答案 0 :(得分:1)

没有;使用更简单的url

使用该表单时,如果邮件头中没有类型信息,则必须配置邮件转换器以告诉它要将数据转换为什么类型...

MessageListenerAdapter

<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" }