3

Springを使用してメインフレームサービスへのjms接続を処理するために、いくつかのレガシーコードをリファクタリングしようとしています。メッセージを送信する前に、接続してメインフレームサービスの応答用の一時的なトピックを作成し、message.setJMSReplyTo(replyTo);それをメッセージのとして設定する必要があります。

誰かがこれの例を提供できますか?一時的なトピックを作成するために、セッションやTopicConnectionなどの低レベルのjmsオブジェクトにアクセスできるドキュメントには何も見つかりませんでした。

4

2 に答える 2

1

を使用してJMSAPIへの低レベルのアクセスが必要な場合は、 JmsTemplateのJmsTemplateメソッドの1つを使用する必要があり ます。これらの中で最も単純なのは、SessionCallbackがJMSセッションオブジェクトを提供する場合です。それで、またはを呼び出すことができます。おそらく、他のexecute()メソッドのいずれかを使用して、このような初期作業の一部を実行できます。execute(...)execute(SessionCallBack)createTemporaryQueue()createTemporaryTopic()

于 2009-10-19T23:18:30.383 に答える
1

Spring Bootアプリで次のコードを使用して、動的にキューを作成できました。

Application.javaで

@Bean 
public ConnectionFactory jmsFactory()
{
    ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory()

    amq.setBrokerURL("tcp://somehost");

    return amq;
}

@Bean 
public JmsTemplate myJmsTemplate()
{
    JmsTemplate jmsTemplate = new JmsTemplate(jmsFactory());

    jmsTemplate.setPubSubDomain(false);
    return jmsTemplate;
}

次に、キューを動的に作成する別のクラスで:

@Component
public class Foo {
    @Autowired
    private ConnectionFactory jmsFactory;

    public void someMethod () {
        DefaultMessageListenerContainer messageListener = new DefaultMessageListenerContainer();

        messageListener.setDestinationName("queueName");
        messageListener.setConnectionFactory(jmsFactory);
        messageListener.setMessageListener(new Consumer("queueName"));
        messageListener.setPubSubDomain(false);
        messageListener.initialize();
        messageListener.start();
    }
}
于 2015-02-04T17:22:50.623 に答える