以 RabbitMQ 为例,yml 文件配置如下:
application:rabbit:default-message:exchange:name: defaultExchangequeue:name: defaultQueuebinding:routing-key: #
代码中通过构造器初始化后,可以不配置 yml 。配置了 yml 会覆盖构造器中配置。
@Getter@Configuration@ConfigurationProperties(prefix = "application.rabbit", ignoreUnknownFields = false)public class ApplicationRabbitMQProperties {/*** 死信交换机默认配置*/private final DefaultMessage defaultMessage = new DefaultMessage();@Getterpublic static class DefaultMessage {private final CustomerExchange exchange = new CustomerExchange();private final CustomerQueue queue = new CustomerQueue();private final CustomerBinding binding = new CustomerBinding();}@Datapublic static class CustomerExchange {/*** 交换机名称*/private String name = "defaultExchange";/*** 交换机是否持久化*/private Boolean durable = true;/*** 是否自动删除空闲的交换机*/private Boolean autoDelete = false;/*** 对交换机属性进行配置*/private Map<String, Object> arguments = new HashMap<>(10);}@Datapublic static class CustomerQueue {/*** 队列名称*/private String name = "defaultQueue";/*** 队列是否持久化*/private Boolean durable = true;/*** 是否连接独占*/private Boolean exclusive = false;/*** 是否自动删除空闲的交换机*/private Boolean autoDelete = false;/*** 对消息属性进行配置*/private Map<String, Object> arguments = new HashMap<>(10);}@Datapublic static class CustomerBinding {/*** 默认路由(#:表示拦截任意字符的路由,*:表示拦截任意的单个字符,其他拦截比如:user.ABC 等自定义路由)*/private String routingKey = "#";}}
