当前位置: 首页 > 知识库问答 >
问题:

如何使用spring JMS在ActiveMQ中创建多个侦听器

佟高澹
2023-03-14

我有一个用例,我想在一个应用程序中创建多个监听器(6)。我想订阅多个目的地(6个主题)。所有订阅都是持久的。我为每个监听器使用单独的默认消息监听器容器(DMLC),并使用不同的客户端id,但我对如何使用连接工厂感到困惑。

我是否应该使用单个 ActiveMQ 池连接工厂,最大连接数指定为 6。或者我应该为每个侦听器使用不同的池连接工厂吗?
使用具有最大连接池连接工厂对于持久用户有什么危害吗?

源代码:
连接工厂:

<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>${jms.broker.url}</value>
</property>
</bean>
</property>
<property name="maxConnections" value="6" />

我的监听器使用它:(我有6个类似的监听者,使用不同的目的地和客户端ID)

<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer"

      <property name="connectionFactory" ref="jmsFactory" />
      <property name="destination" ref="topic_pnlCompleteTopic" />
      <property name="durableSubscriptionName" value="FAGCompletion" />
      <property name="pubSubDomain" value="true" />
      <property name="subscriptionDurable" value="${jms.fagsListener.durable}" />
      <property name="clientId" value="${jms.fagsListener.clientId}" />
      <property name="messageListener" ref="pnlMessageListener" />
      <property name="messageSelector" value="JMSType = 'FAG Completion'" />
 </bean>

共有2个答案

丘浩宕
2023-03-14

由于您使用的是主题,您的侦听器通常每个只使用一个会话。没有理由指定池的限制或使用多个池。您通常会为您的应用程序使用一个池连接工厂,除非您看到限制或将其拆分为不同池的真正原因。

丌官信厚
2023-03-14

这对我来说听起来都很好,只要你不把这个连接工厂用于其他事情。没有理由将连接数限制为6,如果需要,可以放置一个更大的数字,并且仅在必要时才使用。连接工厂通常是你为整个应用共享的内容。将其视为一种用于 JMS 访问的数据源

 类似资料:
  • 问题内容: 问候所有我想做的事情,例如触发器或侦听器(我不知道要做什么),它们将侦听特定的数据库表,并在此表上插入每个新记录后,执行一些Java代码,这意味着它检测到是否有可能插入新记录并获取其数据,我需要一些有关如何完成此过程的指南? 我正在使用Spring-Hibernate-PostgreSQL 问题答案: 这就是创建“ 侦听/提示 ”的目的。 唯一的缺点是您将需要某种类型的后台线程来定期轮

  • 问题内容: 我想知道如何在java中设置自己的侦听器。例如,我有一个将数字从1递增到100的函数。我想在值达到50时设置侦听器。我该怎么做?请给我建议任何教程。 问题答案: 查看使用侦听器的所有类的源代码。实际上,这很容易: 为您的听众创建一个界面,例如 维护清单 侦听器应在每个事件上进行遍历,然后遍历列表并使用一些事件参数调用适当的方法 至于观察者模式以及一些Java代码,请看维基百科。

  • 服务器部件: 客户部分:io.js 消息组件 信息形式——发布过程的开始

  • 我刚接触Spring boot,我正在玩弄它。目前,我已经构建了一些应用程序,希望能够通过队列相互通信。我目前有一个侦听器对象,可以从特定队列接收消息。 这有效。但是,现在我希望能够监听另一个队列。所以我想我会复制上面的对象并更改队列名称。不幸的是,这不起作用,因为Spring Boot只为其中一个创建连接。关于如何让我的Spring Boot应用程序监听多个队列的任何想法?

  • 我是JComboBox的新手 我有4个JComboBox:专用、etudiant、annee和semestre。 每次更改所选项目并将结果添加到滚动窗格(groupe des matieres ouvertes)时,我都需要从其中的4个项目中获取所选项目

  • 问题内容: 假设我使用statement定义了一些变量。代码运行时,变量的值会更改。 如何跟踪此变量的变化?我如何实现某些行为类似于onSomeVariableChangedListener的侦听器? 我还需要知道何时在一个页面中执行了其他方法,以便可以在另一个类中设置侦听器。 问题答案: 这是将变量隐藏在 setter / getter 对后面的众多原因之一。然后,在设置器中,您可以通知您的侦听