我有一个使用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,我希望消息保留在队列中。 我怎样才能实现它?