主题未传递到Glassfish群集中的所有消息驱动Bean

时间:2014-10-20 11:05:40

标签: glassfish message-driven-bean jms-topic

我在glassfish 3.1.2.2集群上创建了一个主题工厂和一个主题池。 该集群具有嵌入式常规,安装了主代理jms。

在向池中发送消息后,我认为连接到机器上的池的所有消息驱动的bean都会收到消息。但只有一个集群实例可以旋转地获取消息。我大多数情况下这是非常好的。但是我想在这里收到它。

我如何设置群集jms以广播给所有收听的MDB' s。我认为TOPIC会做得很好。

@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();
    }
}

由于

1 个答案:

答案 0 :(得分:0)

我看到另一个问题,你需要在每个集群实例上添加一个不同的消息驱动bean的clientid。

@ActivationConfigProperty(propertyName = "clientID", propertyValue="${com.sun.aas.instanceName}")

所以经纪人知道他必须交给每个听众。