【发布时间】:2021-03-17 06:39:51
【问题描述】:
目前,我正在使用 spring boot 和 spring-amqp 监听通过 API 调用创建的新队列 这是成功运行的代码
@RestController
@RequestMapping("/api/register/")
@NoArgsConstructor
public class RegisterQueuesController {
@Autowired
SimpleReceiver simpleReceiver;
@PostMapping(value = "/queues")
public ResponseEntity<String> addAll(final @RequestBody RegisteringQueues registeringQueues) {
simpleReceiver.processQueueEvents(registeringQueues);
return new ResponseEntity<>("SUCCESS", HttpStatus.CREATED);
}
}
@Component
public class SimpleReceiver {
@Autowired
private RabbitListenerEndpointRegistry listenerEndpointRegistry;
@RabbitListener(id = "qEvent")
public void processQueueEvents(RegisteringQueues registeringQueues) {
((DirectMessageListenerContainer) this.listenerEndpointRegistry.getListenerContainer("queueContainer"))
.addQueueNames(registeringQueues.getQueue());
// processBeanQueueEvents();
System.out.println("Received a message with the new queue name: " + registeringQueues.getQueue());
}
@RabbitListener(id = "queueContainer")
public void processMessages(TestQueues testQueues, @Header(AmqpHeaders.CONSUMER_QUEUE) String queue) {
System.out.println("Received a message on queue: " + queue + "data: " + testQueues);
//process testQueues
}
//postman payload
// http://localhost:8080/api/register/queues
{
"queue":[
"queue1",
"queue2",
"queue3"
]
}
`
但是如果应用程序再次启动,我需要在容器 (DirectMessageListenerContainer) 中注册队列并添加队列,例如在应用程序启动时将 queue1 添加到侦听器容器 ID“queueContainer”。
我无法监听队列列表并在启动时将其添加到列表容器中。请在这方面提供帮助
【问题讨论】:
标签: java spring-boot rabbitmq amqp spring-amqp