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。
是否可以获取正在执行的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。