Hello,
I'm trying to use Camel 1.6.1 in SMX 4.1.0.2 (FUSE) and the POJO
Producing / Consuming annotations as described in the online
documentation.
In one class (a CXF-based RESTful webservice), I have the following set
up:
// OutboundFooRequestHandler is an interface (see below)
@Produce(uri="activemq:queue:outbound_foo_req")
private OutboundFooRequestHandler outboundFooRequestHandler;
@POST
@Path("/sendfoo")
public Response sendFoo(OutboundFooRequest sendFooRequest)
{
// (a bunch of web-specific code deleted)
// send this sendFooReqest object on the queue
outboundFooRequestHandler.handle(sendFooRequest);
// Return HTTP response 202 Accepted
return Response.status(202).build();
}
The interface that is annotated with Produce is shown below:
@InOnly
public interface OutboundFooRequestHandler
{
public void handle(OutboundFooRequest outboundFooRequest);
}
Here is the implementation of the interface:
public class OutboundFooRequestHandlerImpl implements
OutboundFooRequestHandler, InitializingBean, DisposableBean
{
private static final Logger logger =
LoggerFactory.getLogger(OutboundFooRequestHandlerImpl.class);
@Override
@Consume(uri="activemq:queue:outbound_foo_req")
public void handle(@Body OutboundFooRequest outboundFooRequest)
{
logger.debug("got it");
// TODO: actually *do* something
}
The producer and the consumer's bundle-context.xml has this:
<camelContext
xmlns="http://activemq.apache.org/camel/schema/spring" />
<bean name="activemq"
class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://default" />
</bean>
</property>
</bean>
I can send a message, but the consumer doesn't wake up and pick up the
message.
It's worth noting that the producer and the consumer are in two
different bundles.
What am I missing?
--sgp