生产者消费者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);
}
我想要做的是获取公司列表,然后从该列表中每秒钟向消费者发送公司消息。 (因此消息之间的延迟应为一秒)
答案 0 :(得分:1)
因此,convertAndSend(Object)接受任何对象。
因此,您要发送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)