Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SpringJMS处理单个消息_Spring_Jms - Fatal编程技术网

使用SpringJMS处理单个消息

使用SpringJMS处理单个消息,spring,jms,Spring,Jms,我正在开发一个现有的SpringJMS应用程序,它使用jms:InboundGateway从ActiveMQ提取消息。此应用程序是一个作业处理器,它将作业从队列中取出并将结果发送回队列。现在一切都很好 我想修改这个应用程序,只接受一个作业,处理它,然后退出,但我还没有找到一个干净的方法来做到这一点。被调用的方法必须返回结果,结果由Spring自动放回队列。有没有办法告诉Spring在1停止接受消息?您如何知道何时完成发送回复消息,以便退出 在更一般的情况下,如果您有一个应用程序想要停止接受消息并

我正在开发一个现有的SpringJMS应用程序,它使用jms:InboundGateway从ActiveMQ提取消息。此应用程序是一个作业处理器,它将作业从队列中取出并将结果发送回队列。现在一切都很好

我想修改这个应用程序,只接受一个作业,处理它,然后退出,但我还没有找到一个干净的方法来做到这一点。被调用的方法必须返回结果,结果由Spring自动放回队列。有没有办法告诉Spring在1停止接受消息?您如何知道何时完成发送回复消息,以便退出

在更一般的情况下,如果您有一个应用程序想要停止接受消息并完成对它们的全部处理,以便可以干净地退出,那么该如何做呢


提前感谢您的建议。

听起来您应该使用JmsTemplate.receive。入站网关用于消息驱动模型。听起来,当您使用消息队列进行传输时,您并没有真正执行消息驱动的处理模型。显然这不是问题,但是如果您的目标是处理单个消息,那么您应该只使用JmsTemplate

另一种方法是使用默认的消息侦听器容器,确保线程设置为1,然后确保activemq设置没有预读设置(即一次读取一条消息,不再读取)。然后,在onMessage方法的末尾,调用DMLC.stop方法