在订阅@SubscribeMapping的固定websocket端点时,我可以使用STOMP执行ACK / NACK并使用预取计数吗?

时间:2016-04-26 10:45:05

标签: stomp spring-amqp spring-websocket

我有一个使用STOMP订阅订阅目的地/用户/队列/固定的客户端: -

destination : /user/queue/fixed
id : 123
ack : client-individual
receipt  : 123456

控制器是: -

@SubscribeMapping ( "/user/queue/fixed" )
    public void handle( Principal principal ) {
        System.out.println( "principal.getName();" + principal.getName() );
        String queueName = HCCHelper.getClientToQueueMap().get( principal.getName() );
        System.out.println( "queue to subscribe**" + queueName );
        // looping for just testing
        while(true){
            System.out.println("checking for messages....");
            Object o = rabbitTemplate.receiveAndConvert(queueName);
            if(o!=null){
                System.out.println( "Returning mesg**" + o.toString() );
                simpMessagingTemplate.convertAndSendToUser( principal.getName(), "/queue/fixed", o.toString() );
            }

            try {
                Thread.sleep(3000);
            } catch ( InterruptedException e ) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            }
       }

我是否可以在订阅此类端点时执行ACK / NACK并使用STOMP的预取计数功能,并期望它的行为与STOMP订阅特定队列的方式相同? 我使用receiveAndConvert(queueName)从队列中获取消息。 基本上,如果没有发送ACK / NACK或者从客户端发送NACK,我希望消息保留在队列中。 我怎样才能实现它?

0 个答案:

没有答案