如何将所有收到的答复队列消息添加到列表

时间:2018-08-23 18:36:12

标签: spring-boot spring-rabbitmq

我正在发布消息以请求队列,并将这些消息放入回复队列。在这里,我想进一步处理所有收到的消息,因此我想在发送到我的处理器之前将所有消息添加到列表(进行进一步的操作)。 下面是我的代码。

@Autowired
    private GeneralProcess generalProcess;

    List <RequestPojo> requestPojoGeneral = new ArrayList<RequestPojo>();

    @RabbitHandler
    @RabbitListener(containerFactory = "simpleMessageListenerContainerFactory", queues ="BulkSolve_GeneralrequestQueue")
    public void subscribeToRequestQueue(@Payload RequestPojo sampleRequestMessage, Message message) throws InterruptedException {


        requestPojoGeneral.add(sampleRequestMessage);
        System.out.println("List size issssss:" +requestPojoGeneral.size() );
        generalProcess.processRequestObjectslist(requestPojoGeneral);

        /*System.out.println("message in general listener is:" + sampleRequestMessage.getDistance());
        System.out.println("Message payload is:" + sampleRequestMessage);
        System.out.println("Message payload1111 is:" + message );*/

    }

以上代码我无法一次获取所有消息。在调用 generalProcess.processRequestObjectslist(requestPojoGeneral); 之前,我必须等到获得所有消息并填充列表。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在邮件中添加标题,例如ERROR: cannot cast type numeric to interval LINE 1: select CAST(duration AS interval) from boboon.entries_entry;

然后

const validate = (values, props) => {
    console.log('Default Props : ', props.name); // here not accessible
};

Test.defaultProps = {
    name: 'Test',
};

export default reduxForm({
    form: 'test',
    validate
})(Test);

(或其他一些技术,例如添加标头“ lastMessage = true”)。

请记住,如果您的服务器在获得完整列表之前崩溃了,除非您将acknownMode设置为messageCount,否则您将丢失消息。

然后,在处理完所有消息后,在频道上呼叫if ((int) message.getMessageProperties().getHeader("messageCount") == list.size() { process(); } 以获取最后一条消息。

您可以访问MANUAL作为方法参数,而deliveryTag在basicAck中。

Channel容器必须至少与最大批次的容器一样大,因为代理将仅允许该数量的未确认消息未处理。