我正在将现有代码从使用activemq5.x迁移到使用artemis。使用时 org.apache.activemq.ActiveMQConnectionFactory
,我的虚拟主题使用者队列中包含发送到虚拟主题的消息。使用时 org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
,他们没有。
使用activemq 5.x的连接工厂为虚拟主题工作的连接池配置为:
<bean id="jmsFactory" class="org.apache.activemq.jms.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:${activemq.broker}" />
<property name="userName" value="${activemq.credentials.username}"/>
<property name="password" value="${activemq.credentials.password}"/>
</bean>
</property>
<property name="maxConnections" value="${activemq.connectionPool.size}" />
<property name="maximumActiveSessionPerConnection" value="${activemq.connectionPool.sessionsPerConnection}" />
</bean>
使用artemis的连接工厂不适用于虚拟主题的连接池配置为:
<bean id="jmsConnectionFactory" class="org.apache.activemq.jms.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory">
<constructor-arg name="url" value="${activemq.broker}"/>
<constructor-arg name="user" value="${activemq.credentials.username}"/>
<constructor-arg name="password" value="${activemq.credentials.password}"/>
</bean>
</property>
<property name="maxConnections" value="${activemq.connectionPool.size}" />
<property name="maximumActiveSessionPerConnection" value="${activemq.connectionPool.sessionsPerConnection}" />
</bean>
对于虚拟主题,我的消费者是camel routes,生产者是spring的示例 JmsTemplate
班级。生产者被配置为产生模式中的主题 VirtualTopic.Foo
,并且消费者被配置为从模式中的camel端点消费 jms:queue:VirtualTopic.Foo::Consumer.MyApplication.VirtualTopic.Foo
. 这个 jms
camel组件配置为 jmsFactory
上面的豆子,还有 JmsTemplate
示例:
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="jmsFactory"/>
<property name="deliveryPersistent" value="${activemq.delivery.persistent}"/>
</bean>
理想的情况下,我可以使用阿耳特弥斯的 ActiveMQConnectionFactory
. 是什么原因导致发送到虚拟主题的消息在使用时不能被分派到使用者队列?
暂无答案!
目前还没有任何答案,快来回答吧!