MessageDrivenBean 实例标识符

MessageDrivenBean instance identifier

是否可以获取正在执行的MDB 实例的标识符? 我有一个 MDB 池(例如 10),我在消息中设置了 属性 JMSXGroupID,以便让相同的 MDB 实例处理具有相同 JMSXGroupID 的所有消息。 要检查我是否想记录当前 MDB 实例的标识符:我如何获取该信息?

根据 EJB 规范,没有这样的标识符,尽管它可能可以使用您的 MDB 供应商来实现 API。

您始终可以在@PostConstruct 方法中创建唯一的 MDB 标识符,但在我看来这不是一个好的解决方案,因为池中的所有 bean 都应该以相同的方式对待!

也许您可以将 JMSXGroupID 设置为一条消息 header,并使用 MDB 中的消息选择器使用给定的 MDB 实现来处理它,这样就会有多个 bean 监听给定的 queue (example)?

或者您可以创建通用 MDB bean,它将提取前面提到的 header 并调用具有您愿意根据 JMSXGroupID 实现的状态的 EJB 单例 bean。