我正在使用 Glassfish 和 OpenMQ 作为远程消费者实例来查找消息生产者的队列并同步处理请求。
根据 McIntosh 对Synchronous Consumer with JMS Queue的回答,可以通过调度来处理同步消息接收。我打算这样做,但我只看到了通过异步消息驱动 Bean (MDB) 连接到消息队列的示例,如下所示:
import javax.jms.MessageListener;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "addressList", propertyValue = "mq://localhost:54020/"), //found in Producer server's domain.xml as JMS_PROVIDER_PORT
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/ProducerRequestMessageQueue"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")})
public class ConsumerNode extends Node implements MessageListener {
@Resource
private MessageDrivenContext _mdc;
public ConsumerNode() {
super();
}
@Override
public void onMessage(Message message) {
//process message...
}
}
如何在不实现MessageListener
和设置为消息驱动 Bean 的情况下连接到远程生产者队列?