私はSpring JMSを使用してWSO2MBサーバーに接続しています。すべて正常に動作していますが、すべてのリスナーに同じIDが割り当てられます。それをユニークにするために、私はclientIdを提供しましたが、動作しません。私は名前を提供することができる他のフィールドを見つけることができません。spring jmsトピックの名前を割り当てます。
私はJMSリスナーでもidを提供しましたが、成功しませんでした。
@Bean
@ConditionalOnProperty(name="my.listener.active", matchIfMissing = true)
public JmsListenerContainerFactory jmsListenerContainerFactory(@Qualifier("listenerConnectionFactory") ConnectionFactory connectionFactory) throws URLSyntaxException {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setClientId("listener"+listenerTopic);
if (Boolean.valueOf(listenerTopic)) {
factory.setSubscriptionDurable(true);
factory.setPubSubDomain(true);
}
return factory;
}
@JmsListener(destination = "${default-queue-name-to-listen}", id = "${default-queue-name-to-listen}")
public void receiveMessage(final Message<T> message) throws JMSException {
}
アプリケーションの再起動後に同じIDを使用する必要がありましたか?これが問題です。 "listener" + listenerTopic + System.currentTimeMillis()を追加することはできません。 –
各サービスに同じ名前が必要なので、複数のインスタンスを実行していても、同じ名前を共有します。しかし、異なるサービスは別の名前を持つ必要があります – krmanish007