我们正在构建一个通过 RabbitMQ 接收消息的 Spring Boot 应用程序 (2.0.4-RELEASE)。因此application.properties包含兔子相关的配置:
spring.rabbitmq.addresses=****
spring.rabbitmq.username=****
spring.rabbitmq.password=****
spring.rabbitmq.listener.simple.concurrency=2
spring.rabbitmq.listener.simple.prefetch=5
spring.rabbitmq.listener.simple.retry.enabled=true
spring.rabbitmq.listener.simple.retry.max-attempts=5
配置:
@Bean
public TopicExchange fileUpdate() {
return new TopicExchange("my.fancy.exchange", true, false);
}
@Bean
public Queue fileUpload() {
return new Queue("myFancyQueue", true);
}
@Bean
public Binding bindingUpload(Queue queue, TopicExchange eventExchange) {
return BindingBuilder.bind(queue).to(eventExchange).with("");
}
消息消费者:
@RabbitListener(queues = "myFancyQueue")
public void receive(Object message) {
...
}
当收到特定类型的消息(例如__TypeId__: my.fancy.package.Clazz)时,抛出以下错误:
引起:java.lang.IllegalArgumentException:类“my.fancy.package.Clazz”不在受信任的包中:[java.util, java.lang]。如果您认为这个类可以安全地反序列化,请提供它的名称。如果序列化仅由受信任的来源完成,您还可以启用全部信任 (*)。
从我迄今发现的ActiveMQ通过提供一个配置选项application.properties作为
spring.activemq.packages.trust-all=
或者
spring.activemq.packages.trusted=
但我找不到任何适用于 rabbitMQ 的类似选项。到目前为止,我一直在使用一种解决方法来解决我的问题,但当然,在配置文件中有这样的选项会很棒。
宝慕林4294392
相关分类