Quercus offers a simplified messaging interface built upon JMS. This functionality makes it possible to send and receive messages using either the Resin JMS implementation or any other messaging service with a JMS implementation. Many features of JMS are designed for message-driven services which make sense in the Java world, but are not appropriate for PHP. This tutorial focuses receiving messages in a non-blocking way.
This example uses two queues: an "ad queue" and a "control queue".
The PHP script removes advertisements from the ad queue using the
receive() method. This method is non-blocking -
if there are no advertisements, the method will return
instead of waiting for a new advertisement. Whenever the PHP script
removes an advertisement from the ad queue, it signals a Java message
driven bean (MDB) to add another ad by sending an empty message to the
The programming model of the Quercus JMS interface is first to create
a connection to a queue by instantiating a
To create a
JMSQueue object, pass in the JNDI name of the
JMS queue to be used.
JMSQueue objects have two methods:
receive(). The example above shows
how to use both methods.
JMS requires that two resources be set up: A
ConnectionFactory and a
Queue. Both are
ConnectionFactory is used to connect to all the
Queues and only one of them needs to be set up. The default
JNDI name is
jms/ConnectionFactory - Quercus automatically
uses this connection factory. Another connection factory may be used by
setting the PHP ini variable
This example uses two queues,
The complete configuration is in