Hi Jose,
Thanks for your attention again,
Jose Luna-2 wrote:
>
> You have to be sure to include the reply-to destination in the request,
> and then you know which destination to check for the response. Since we
> don't have access to temporary destinations, we simply make sure that
> destination exists before making requests. So the requesters A1, A2, and
> A3 might create the following queues:
>
> /queue/responses.A1
> /queue/responses.A2
> /queue/responses.A3
>
That's right when services know their names/numbers. When services are not
assigned their names prior to talking with server, that is difficult to
arrange such set of queues.
Jose Luna-2 wrote:
>
> Then, when A1 makes a request, it sets the reply-to header to
> "/queue/responses.A1", and then checks that queue for the response. Of
> course, we can still use the correlation-id to correlate the requests and
> responses. The benefit of using the temporary queue is that the queue is
> destroyed when the consumer unsubscribes. So without temporary queues, we
> need to have a finite number of requesters with some way to uniquely
> identify themselves. If this requirement cannot be met, then our queue
> creation could easily get out of control. In other words, we could end up
> with thousands of queues of the form /queue/responses.{ID}. This can
> cause problems with resource usage (memory and threads).
>
These two approaches may be combined in the following way:
1. Common queue /queue/requests may be used for services to inquire their
private queue (which may not exist at the time of request and must be
created by server)
Common queue /queue/responses may be used for services to retrieve names of
their private queues.
2. These private queues created by server play roles of temporary queues.
And there the question appears: what if the client dies without
unsubscribing? The queue is left unattended and some kind of unused queues
collector is needed.
Jose Luna-2 wrote:
>
> 2.) Create a broker plugin that destroys any queues that matches
> /queue/responses.* when the consumer unsubscribes. This is the better
> long-term solution, and it's essentially mimicking temporary queue
> behaviour.
>
AFAIK, JMS API does not have means to check whether queue has any clients.
Therefore such plugin should cooperate with broker implementation directly.
Hopefully this is possible.
Thank you.
--
View this message in context:
http://www.nabble.com/Implement-request-response-with-JMS-over-Stomp-tp24914033p24931667.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.