A user might search for other employees in the company
who know about a certain client and a technology. The servlet processes the request and
enqueues a value object to the queue with minimal amount of data (i.e., the query terms, the
URL, the user ID, a time-stamp, etc.) and then respond with the search results. Asynchronously,
a thread uses a QueueEventHandler object to decide which item in the queue should
be dequeued and then passes that object to get handled. The object performs any calculations
(number of searches, list management, and clustering or trend-type calculation) and stores
the data to be presented and used in other ways. An example of where this data can be used
is in the popular, ???what are other people searching for right now??? capability. Even though the
insert is synchronized (we used a Java ArrayList), they take more precedent because there
are more enqueues than dequeues at any given time. You can see in the sample screen shot
of the BluePages administration interface that the peak queue size for this specific server
instance is 268, so we know the approach is working.
In some cases, a soft-queue is not sufficient, and a real message queue subsystem is required.
The proposal of this section is simply to raise the issue that not all aspects of a transaction
need to complete during the duration of handling a request.
Pages:
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323