我在 glassfish 3.1.2.2 集群上创建了一个主题工厂和一个主题池。集群有一个嵌入式常规,安装了主代理 jms。
在向池中发送消息后,我认为连接到机器上池的所有消息驱动 bean 都会收到消息。但只有一个集群实例轮流获取消息。在大多数情况下,这非常好。但在这里,我想在任何地方收到它。
我必须如何设置集群 jms 以广播到所有正在侦听的 MDB。我坚持一个话题会做到这一点。
@Resource(mappedName="jms/TestTopicFactory")
private TopicConnectionFactory topicConnectionFactory;
@Resource(mappedName="jms/TestTopicPool")
private Topic topic;
----
TextMessage topicmsg = session.createTextMessage("topic " + i++);
TopicConnection topicConnection = topicConnectionFactory.createTopicConnection();
TopicSession topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
TopicPublisher publisher = topicSession.createPublisher(topic);
publisher.publish(topicmsg);
----
@MessageDriven(
mappedName="jms/TestTopicPool",
activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Topic")
})
public class MessageDrivenBeanTopic implements MessageListener {
@Override
public void onMessage(Message message) {
try {
TextMessage text = (TextMessage)message;
System.out.println(text.getText());
} catch (Throwable t) {
t.printStackTrace();
}
}
谢谢