我有一个通过ActiveMQ发送消息的webservice(Restful),并通过在同一请求中创建一个临时监听器来同步接收响应。
问题是,监听器等待同步进程的响应,但永远不会死。我需要该侦听器接收响应,并立即停止侦听器一旦响应webservice的请求。
我有一个很大的问题,因为对于Web服务的每个请求,都会创建一个监听器,这个监听器处于活动状态,从而产生开销。
答案 0 :(得分:0)
链接中的代码不是生产等级 - 只是一个如何制作一个" hello world"请求回复。
这是一些伪造的代码来处理消费响应阻塞 - 然后关闭消费者。
MessageConsumer responseConsumer = session.createConsumer(tempDest);
Messages response = responseConsumer.receive(waitTimeout);
// TODO handle msg
responseConsumer.close();
无论如何,JMS中的临时目的地都很慢。您可以改为使用JMSCorrelationID并将回复转到常规队列"由单个消费者处理所有回复。这样,您需要一些线程处理代码将消息移交给Web服务线程,但它将是非阻塞且非常快。