import com.zking.config.RabbitConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = RabbitConfig.QUEUE_A,autoStartup= "false",id = "1111") //监听队列
public class aa {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 获取队列信息
*
* @param content
*/
@RabbitHandler
private void process(String content) {
logger.info("接收处理队列A当中的消息: " + content);
}
}
把autoStartup和id去掉,这个监听队列是可以监听到的,加上后开启队列监听但是:
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry() {
RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry = new RabbitListenerEndpointRegistry();
return rabbitListenerEndpointRegistry;
}
package com.zking.receiver;
import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.Collection;
@Repository
public class MsgReceiver {
@Autowired
private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;
/**
* 启动队列
*/
public void start() {
Collection<MessageListenerContainer> listenerContainers = rabbitListenerEndpointRegistry.getListenerContainers();
MessageListenerContainer queue_a = rabbitListenerEndpointRegistry.getListenerContainer("1111");
if(!queue_a.isRunning()){
queue_a.start();
}
}
}
MessageListenerContainer queue_a = rabbitListenerEndpointRegistry.getListenerContainer("1111");
这个结果是个null;这是什么原因?求大神解答