根据documentation 使用@RabbitListener注释配置监听器
将推断的类型信息添加到MessageProperties中;这允许转换器转换为目标方法的参数类型
所以我可以使用自定义pojo进行转换。
我的问题 - 当基于xml的策略用于配置监听器时,它的工作方式是否相同:<rabbit:listener-container>
<rabbit:listener ref=...
答案 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" }