在 spring jms 主题中指定名称
assign name in spring jms topic
我正在使用 spring JMS 连接到 WSO2MB 服务器。一切正常,但所有听众都分配了相同的 ID。为了使其独一无二,我提供了 clientId 但它不起作用。我找不到可以提供名称的任何其他字段。
我什至在 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 {
}
每个连接都需要有一个唯一的clientID
void org.apache.activemq.ActiveMQConnectionFactory.setClientID(String
clientID)
Sets the JMS clientID to use for the created connection.
Note that this can only be used by one connection at once so generally
its a better idea to set the clientID on a Connection
您的解决方案是使用 org.springframework.jms.connection.SingleConnectionFactory
订阅名称使连接名称唯一并解决了我的问题
@JmsListener(
destination = "${default-queue-name-to-listen}",
subscription = "${default-queue-name-to-listen}"
)
public void receiveMessage(Message<T> message) throws JMSException {}
我正在使用 spring JMS 连接到 WSO2MB 服务器。一切正常,但所有听众都分配了相同的 ID。为了使其独一无二,我提供了 clientId 但它不起作用。我找不到可以提供名称的任何其他字段。
我什至在 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 {
}
每个连接都需要有一个唯一的clientID
void org.apache.activemq.ActiveMQConnectionFactory.setClientID(String clientID)
Sets the JMS clientID to use for the created connection. Note that this can only be used by one connection at once so generally its a better idea to set the clientID on a Connection
您的解决方案是使用 org.springframework.jms.connection.SingleConnectionFactory
订阅名称使连接名称唯一并解决了我的问题
@JmsListener(
destination = "${default-queue-name-to-listen}",
subscription = "${default-queue-name-to-listen}"
)
public void receiveMessage(Message<T> message) throws JMSException {}