【发布时间】:2017-06-16 13:08:16
【问题描述】:
我正在尝试使用 Java EE 中的消息驱动 Bean 实现管道和过滤器模式,但我希望以队列可配置且 bean 在运行时创建的方式来实现。这样就可以轻松更改过滤器的执行顺序。
我是 Java EE 的新手,过去使用 MDB 时,我总是这样做:
@MessageDriven(mappedName = "jms/myQueue", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class ReceiveMessageBean implements MessageListener {
这不符合我的要求。
我正在考虑做一个每个过滤器都可以继承的 bean,这样我就可以将队列方法的读取和写入仅放在一个地方,如下所示:
public class StepBean {
public void createBean(String queueRead, String queueWrite) {
//make the bean listen from queueRead
//make the bean write to queueWrite
}
public void onMessage(Message message){
//get the message from queueRead and transform it to my own class
processMessage(myMessage);
}
public void processMessage(MyMessage message){
//each filter should implement this method
sendMessage(myMessage);
}
public void sendMessage(MyMessage message){
//send message to queueWrite
}
}
然后在我的 ejb 中有某种工厂,它为队列创建具有所需值的步骤 bean。
但我几乎不知道如何做到这一点。我一直在查看this,但由于我的 bean 都从队列中读取和写入,因此它们并不是严格意义上的 MDB。
我正在使用 GlassFish 4.1.2 和 Netbeans 8.2。
欢迎任何有关如何执行此操作或是否可行的指导。
【问题讨论】:
标签: java jakarta-ee ejb jms message-driven-bean