我需要侦听多个队列(存在于同一队列管理器中)。我有用于侦听单个队列的可用Spring Boot应用程序代码。但是,有没有任何方法可以从单个Spring Boot应用程序连接到多个队列?
还有,是否可以在运行时将侦听器从一个队列切换到另一个队列?
我有从单个队列读取的代码,如下所示:
public class ConnectionConfiguration {
private static final Logger logger = LogManager.getLogger(ConnectionConfiguration.class);
@Value("${LDR_LOCAL_MQ_READ_FACTORYNAME}")
String connectionFactory;
@Value("${LDR_LOCAL_MQ_QUEUENAME}")
String localQueue;
@Value("${jmsConcurrency}")
String concurrency;
@Value("${servers.mq.host}")
private String host;
@Value("${servers.mq.port}")
private Integer port;
@Value("${servers.mq.queue-manager}")
private String queueManager;
@Value("${servers.mq.channel}")
private String channel;
@Value("${servers.mq.queue}")
private String queue;
@Value("${servers.mq.timeout}")
private long timeout;
@Bean
public ConnectionFactory connectionFactory() {
JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
jndiObjectFactoryBean.setResourceRef(true);
jndiObjectFactoryBean.setJndiName(connectionFactory);
try {
jndiObjectFactoryBean.afterPropertiesSet();
} catch (IllegalArgumentException e) {
logger.error(e.getMessage(), e);
e.printStackTrace();
} catch (NamingException e) {
logger.error(e.getMessage(), e);
e.printStackTrace();
}
return (ConnectionFactory) jndiObjectFactoryBean.getObject();
}
@Bean
public MQQueueConnectionFactory mqQueueConnectionFactory() {
MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
try {
mqQueueConnectionFactory.setHostName(host);
mqQueueConnectionFactory.setQueueManager(queueManager);
mqQueueConnectionFactory.setPort(port);
mqQueueConnectionFactory.setChannel(channel);
mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
mqQueueConnectionFactory.setCCSID(1208);
} catch (Exception e) {
e.printStackTrace();
}
return mqQueueConnectionFactory;
}
@Bean
public SimpleMessageListenerContainer queueContainer(MQQueueConnectionFactory mqQueueConnectionFactory) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(mqQueueConnectionFactory);
container.setDestinationName(queue);
container.setMessageListener(getListenerWrapper());
container.start();
return container;
}
@Bean
public MQListener getListenerWrapper() {
return new MQListener();
}
@Bean
public JmsTemplate getJmsTemplate() {
try {
return new JmsTemplate(mqQueueConnectionFactory());
} catch (Exception exp) {
logger.error(exp.getMessage(), exp);
}
return null;
}
}
只需为每个队列添加一个侦听器容器bean。
要更改队列,请调用停止,然后调用关闭,更改目标,然后调用初始化,然后调用启动。
因此,我完成了以下步骤: > 然后提示我输入密码和其他各种信息。我像这样完成了: 在应用程序中添加了以下行。yml文件来自src/main/resources: 已启动Spring Boot应用程序。出现此异常: 其主要思想是PKCS12提供程序不存在。 有什么想法吗? 也许使用不同的提供商?如果答案是肯定的,我应该使用哪个提供商?
我想对Spring数据使用ElasticSearch。我使用的是Spring 5、Spring Boot 2和ElasticSearch 7.4。Docker compose: 马文: 存储库: 配置: 和错误时启动应用程序: 引起:java.lang.NoSuchMEDError:org.springframework.http.HttpHeaders.(Lorg/springframe/uti
我在intellij上启动spring boot应用程序时遇到问题,它失败了,并显示以下消息:与目标VM断开连接,地址:'127.0.0.1:49784',传输:'socket' 过程结束,退出代码为255。以前有人遇到过这种情况吗?
我试图从spring主页模拟RESTful Web服务”https://spring.io/guides/gs/rest-service/". Gradle编译工作正常,但是当我运行Spring Boot时,我得到了下面的错误,我不知道是什么原因。我是Spring新手,有人能帮我吗? 我的配置详细信息包括: Windows 7 Intellij Idea 13.1.3 Java-8 Gradle-
当我启动Spring Boot应用程序时,我得到了: 2020-11-11 03:02:24.333警告20648--[main]ConfigServletWebServerApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependencyException:创建名为“org
我是spring的初学者,希望这样做示例项目…我有一个数据库,我想连接到它…我使用了像AutoWired和service这样的注释。但有个问题我解决不了 Controller包中的RegisterationController具有我要调用的服务: 第一个包中的DataManagement类: 第一包中的StudentAccountRepository: 第一包中得学生帐户..引用数据库中的表: M