【发布时间】:2020-09-30 06:00:17
【问题描述】:
我开发了一个@JMSListener,它可以从 Java 属性中获取目标并且工作得很好。
但现在我需要能够在运行时更改队列的“目标”,而不必重置整个应用程序,即使我在运行时修改属性,队列“目标”也不会改变。
这是我们如何实现@JMSListener:
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
@Component("b2b.CCRReceiver")
@Slf4j
public class CCRReceiver {
//SOME_VARIABLES
@Transactional
@JmsListener(destination = "${tibco.configuration.queues.upsert}", containerFactory = "jmsFactory", concurrency = "${jms.concurrency}")
public void receiveMessage(Message message) {
//DO_SOME_STUFF
}
}
如您所见,我第一次从值表达式中获取目标并且它工作正常,但是我不知道如何访问 JMSListener 并更改它的目标。
这可以吗?有什么办法可以改变目的地吗?
或者我必须以其他允许我执行此操作的方式实现此 JMS 侦听器?
【问题讨论】:
标签: java spring spring-boot jms spring-jms