我正在使用spring和activemq并使用以下方法从消息代理接收消息:
@JmsListener(destination = "sample.queue")
public void receiveQueue(String text) {
System.out.println(text);
}
Run Code Online (Sandbox Code Playgroud)
我只是觉得destination从我的配置能够很好application.properties.有没有办法做到这一点?
好的,我找到了方法.假设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)
| 归档时间: |
|
| 查看次数: |
848 次 |
| 最近记录: |