我有一个问题,生产者消费狂犬病春季应用。我想从生产者向消费者发送一系列消息,但是消费者部分没有收到它们,生产者就会发送它们。当我试着只发送一条信息的时候,它起了作用。守则如下:
生产者方法:
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);
}我想做的是得到一个公司名单,从这个列表中每一秒发送一条公司信息给消费者。(因此消息之间的延迟应该是一秒)
发布于 2020-11-12 12:07:39
根据这一点,convertAndSend( Object )接受任何对象。
因此,您正在发送1 ( Company ),您的recievedMessage(Company)也期望1 Company对象,这就是它与1一起工作的原因。
如果您想要发送一批公司(列表),那么根据https://docs.spring.io/spring-amqp/docs/2.2.9.RELEASE/reference/html/#receiving-batch,您将需要setBatch和setBatchListener(真)和其他配置来支持批处理(一次发送多条消息的能力)。
convertAndSend(列表xxx)和recievedMessage(List
https://stackoverflow.com/questions/64802616
复制相似问题