대기열에서 메시지를 읽고 그 동안 처리 된 메시지를 다른 대기열로 보내는 구성 요소가 있습니다. 따라서이 구성 요소는 메시지 소비자 및 제작자입니다. 이들을 구성하기 위해 소비를위한 연결 팩토리와 생산을위한 다른 연결 팩토리가 필요합니다. 여기는 스프링 구성의 일부입니다.Spring Jms의 프로듀서와 소비자는 동일한 연결 팩토리를 사용합니까?
<!-- Configuration for listener -->
<bean id="mdc.TargetConnectionFactory4Listener" class="com.tibco.tibjms.TibjmsConnectionFactory">
<property name="serverUrl" value="tcp://localhost:7222"/>
</bean>
<bean id="mdc.ConnectionFactory4Listener" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="mdc.TargetConnectionFactory"/>
<property name="username" value="admin" />
<property name="password" value="test" />
</bean>
<bean id="mdc.InputQueue" class="com.tibco.tibjms.TibjmsQueue">
<constructor-arg>
<value>INPUT_QUEUE</value>
</constructor-arg>
</bean>
<bean id="mdc.JmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="mdc.ConnectionFactory4Listener" />
<property name="destination" ref="mdc.InputQueue" />
<property name="messageListener" ref="mdc.MessageReceiver" />
......
</bean>
<!-- Configuration for sender -->
<bean id="mdc.TargetConnectionFactory4Sender" class="com.tibco.tibjms.TibjmsQueue">
<property name="serverUrl" value="tcp://localhost:7222"/>
</bean>
<bean id="mdc.CachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="mdc.TargetConnectionFactory4Sender" />
<property name="sessionCacheSize" value="50" />
</bean>
<bean id="mdc.OutputQueue" class="com.tibco.tibjms.TibjmsQueue">
<constructor-arg>
<value>DISCOVERY_QUEUE</value>
</constructor-arg>
</bean>
<bean id="mdc.JmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="mdc.CachingConnectionFactory" />
</bean>
<bean id="mdc.MessageReceiver" class="net.siemens.discovery.queue.QueueMessageListener">
<property name="jmsTemplate" ref="mdc.JmsTemplate" />
<property name="destination" ref="mdc.OutputQueue" />
......
</bean>
2 개의 대기열이 동일한 EMS 서버에서 실행 중입니다. 일부는이 구성에 대한 의견을 갖고 있습니다. 하나의 ConnectionFactory 만 사용하여 구성 할 수 있으며 두 개의 인스턴스가 필요하지 않습니다. 그러나 하나의 ConnectionFactory 인스턴스를 사용하는 경우 인스턴스는 DefaultMessageListenerContainer와 CachingConnectionFactory (JmsTemplate에서 사용됨)에서 모두 사용됩니다. 나는 그들이 서로에게 영향을 미치는지 여부를 모른다.
답변 해 주셔서 감사합니다. Gary. – Tulip