生产者/消费者春季发送多条消息

时间:2020-11-12 10:58:18

标签: java rabbitmq

生产者消费者Rabbitmq春季应用程序出现问题。我想将一系列消息从生产者发送到消费者,生产者发送它们,但是消费者部分没有收到它们。当我尝试仅发送一条消息时,它起作用了。代码如下:

生产者方法:

public void produce1(List<Company> companiesList){
        for (Company company:
             companiesList) {
            amqpTemplate.convertAndSend(exchange, routingkey, company);
            System.out.println("Send msg = " + company);
        }
       
    }

消费者方法:

 @RabbitListener(queues="${jsa.rabbitmq.queue}", containerFactory="jsaFactory")
    public void recievedMessage(Company company) {
        System.out.println("Recieved Message: " + company);
    }

我想要做的是获取公司列表,然后从该列表中每秒钟向消费者发送公司消息。 (因此消息之间的延迟应为一秒)

1 个答案:

答案 0 :(得分:1)

因此,convertAndSend(Object)接受任何对象。

https://docs.spring.io/spring-amqp/docs/latest-ga/api/org/springframework/amqp/core/AmqpTemplate.html

因此,您要发送1(公司),而您的recevedMessage(公司)也需要1个公司对象,这就是为什么它与1配合使用的原因。

如果要发送公司的批次(列表),则根据https://docs.spring.io/spring-amqp/docs/2.2.9.RELEASE/reference/html/#receiving-batch,您将需要setBatch和setBatchListener(true)以及其他配置来支持批次处理(能够在处发送多个消息)时间)

convertAndSend(列表xxx)和接收的消息(列表<公司)xxx)