我正在使用Glassfish 3.1.2,并设置了一个节点和两个实例的集群。Glassfish - 如何将JMS消息广播到群集中的所有实例?
我的应用程序中有一个消息驱动bean,它订阅了我部署到群集的主题。
当我向该主题发布消息时,我希望这两个实例都能收到该消息。
但是,在实践中,我发现只有一个实例接收到消息。
我相信我遇到了一个名为“共享订阅” http://docs.oracle.com/cd/E18930_01/html/821-2438/gjzpg.html#MQAGgjzpg
的功能(该功能默认启用)功能说,与同一个客户端ID集群中的bean是共享,并有效地仅一个订阅。
它说,默认情况下,MDB的客户端ID是它的名称,这意味着我的两个实例都使用相同的客户端ID。
因此,除了完全禁用此功能外,我想知道是否可以设置MDB,以便每个实例使用不同的客户端ID进行订阅?这似乎有点棘手,因为两个实例都使用相同的WAR文件。我认为你可以在注释中设置客户端ID,但我不确定这是否可以在运行时更改...
谢谢,但我不知道怎么去访问MDB的底层连接,也没怎么设置的ActivationSpec属性(可以这样使用注释做了什么?)我BTW现在的做法它的作用是使用下面的注解:@ActivationConfigProperty(propertyName =“clientID”,propertyValue =“$ {com.sun.aas.instanceName}”)这似乎为每个实例设置了不同的客户端ID。 – Darren 2013-03-08 14:29:02