我使用的是 Glassfish 3.1.2,并设置了一个包含一个节点和两个实例的集群。
我的应用程序中有一个消息驱动 bean,它订阅了我部署到集群的主题。
当我向主题发布消息时,我希望两个实例都接收消息。
但是,在实践中,我发现只有一个实例接收到该消息。
我相信我遇到了一个名为“共享订阅”的功能 http://docs.oracle.com/cd/E18930_01/html/821-2438/gjzpg.html#MQAGgjzpg
该功能(默认启用)表示集群中具有相同客户端 ID 的 bean 是共享的,并且实际上只是一个订阅。
它说默认情况下,MDB 的客户端 ID 是它的名称,这意味着我的两个实例都使用相同的客户端 ID。
因此,除了完全禁用此功能之外,我想知道是否可以设置一个 MDB,以便每个实例使用不同的客户端 ID 订阅?这似乎有点棘手,因为两个实例都使用相同的 WAR 文件。我认为您可以在注释中设置客户端 ID,但我不确定是否可以在运行时更改...