如何从属性文件定义注释的字段值

epa*_*van 2 java spring jms

我正在使用spring和activemq并使用以下方法从消息代理接收消息:

@JmsListener(destination = "sample.queue")
public void receiveQueue(String text) {
    System.out.println(text);
}
Run Code Online (Sandbox Code Playgroud)

我只是觉得destination从我的配置能够很好application.properties.有没有办法做到这一点?

epa*_*van 6

好的,我找到了方法.假设message-consumer.destination属性application.properties定义了所需的目标,那么它就像这样简单:

@JmsListener(destination = "${message-consumer.destination}")
public void receiveQueue(String text) {
    System.out.println(text);
}
Run Code Online (Sandbox Code Playgroud)

以下是关于如何外部化队列目标的旧想法:

这是消息使用者.

@Component
public class Consumer implements MessageListener {

    @Override
    public void onMessage(Message message) {

    }
}
Run Code Online (Sandbox Code Playgroud)

这是jms配置:

@Configuration
@EnableJms
public class JmsConfiguration implements JmsListenerConfigurer {

    @Value("${message-consumer.destination}")
    private String destination;

    @Inject
    private MessageListener messageListener;

    @Override
    public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
        SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
        endpoint.setId("audit.logging");
        endpoint.setDestination(destination);
        endpoint.setMessageListener(messageListener);
        registrar.registerEndpoint(endpoint);
    }
Run Code Online (Sandbox Code Playgroud)