0

皆さん、こんにちは。

外部トピックにサブスクライブするようにメッセージ駆動型 Bean を構成しようとしています。私と同僚は、このような JSE クライアントでトピックをうまく聞くことができました。


    public static void main(String[] args) {
        TopicSession    sess     =  null;
        TopicConnection conn     = null;
        TopicSubscriber consumer = null;

        Properties props = new Properties();
        p.put("java.naming.provider.url",         "remote://#server-name#:#server-port(4747)#");
        p.put("java.naming.factory.initial",      "org.jboss.naming.remote.client.InitialContextFactory");
        p.put("java.naming.security.principal",   "#username#");
        p.put("java.naming.security.credentials", "#password#");

        InitialContext context = new InitialContext(props);

        TopicConnectionFactory factory = (TopicConnectionFactory)context.lookup("jms/RemoteConnectionFactory");
        conn = factory.createTopicConnection("#username#", "#password#");
        conn.setClientID("#client-id#");

        sess = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);

        Topic topic = (Topic)context.lookup("jms/topic/#topic-name#");
        consumer = sess.createSubscriber(topic);
        consumer.setMessageListener(new MyTopicListener());

        try {
            conn.start();
            // ... loop until done.
        } finally {
            consumer.close();
            sess.close();
            conn.close();
        }
    }

これを MDB に移動するにはどうすればよいですか?

私が知っている限りでは、destinationType、connectionFactoryJndiName、destinationJndiName、initialContextFactory を MessageDriven アノテーションの activationConfig で設定できます。しかし、リモート URL、ユーザー名、およびパスワードはどうでしょうか?

参考までに、JBoss AS 7.1.1 を使用しています。これは MDB 3.0 用です。

回答とコメントをお寄せいただきありがとうございます。

4

2 に答える 2

1

HornetQ には、インバウンドおよびアウトバウンドのリソースアダプターがあります。インバウンド JCA RA は、メッセージ駆動型 Bean (MDB) によるメッセージの消費に使用されます。リソース アダプタは、次の例に示すように、MDB のアクティベーション構成プロパティを使用して構成できます。

@MessageDriven(name = "ExampleMDB", activationConfig = {
   @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
   @ActivationConfigProperty(propertyName = "destination", propertyValue = "testQueue"),
   @ActivationConfigProperty(propertyName = "connectorClassName", propertyValue ="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory"),
   @ActivationConfigProperty(propertyName = "connectionParameters", propertyValue = "host=172.168.1.137;port=5445")})
public class ExampleMDB implements MessageListener {
   public void onMessage(Message recvMsg) {
   ... 
   }
}

設定プロパティの完全なリストについては、HornetQ のドキュメントを参照してください: http://docs.jboss.org/hornetq/

于 2012-11-15T22:03:22.707 に答える
1

新しい hornetrq http://www.packtpub.com/hornetq-messaging-developers-guide/bookも確認してください。

于 2012-12-19T19:30:20.467 に答える