【问题标题】:how to add queues inside container when spring boot application booting up?春季启动应用程序启动时如何在容器内添加队列?
【发布时间】: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


    【解决方案1】:

    您需要将队列名称保存在某个地方(例如 db、redis 等),并在启动期间将新消息发送到控制侦听器队列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-15
      • 2018-05-20
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 2015-11-11
      • 2018-09-04
      • 2015-03-12
      相关资源
      最近更新 更多