2017-03-12 47 views
0

我基於作業實例ID創建動態隊列。對於請求隊列,我可以覆蓋xml config &將java代碼中的隊列名稱設置爲jmsTemplateRequest.setDefaultDestination(jobid) xml config,如下所述。 對於響應隊列,我想要一個解決方案。原因我無法以編程方式爲jms:inbound-channel-adapter設置jms-template屬性。Spring集成 - 設置動態隊列名稱

<int-jms:outbound-channel-adapter channel="RequestsChannel" jms-template="jmsTemplateRequest"/> 
<bean id="RequestQueue" class="org.apache.activemq.command.ActiveMQQueue"> 
    <constructor-arg value="RequestsQueue" /> 
</bean> 

<bean id="jmsTemplateRequest" class="org.springframework.jms.core.JmsTemplate"> 
    <property name="connectionFactory" ref="connectionFactory"/> 
    <property name="receiveTimeout" value="5000" /> 
    <property name="defaultDestination" ref="RequestQueue"/> 

    <!-- OTHERWISE how can I modify queue name in below code in java by autowiring? --> 
    <int-jms:message-driven-channel-adapter connection-factory="connectionFactory" 
             channel="ReplyChannel" 
             destination-name="ReplyQueue"/> 

回答

0

消息驅動的適配器不使用JmsTemplate

您必須使用java @Configuration構建適配器,而不是使用XML。

您需要兩個@Bean s-a JmsMessageDrivenEndpoint和一個ChannelPublishingJmsMessageListener它在構造函數中傳遞到端點。

你也可以使用屬性佔位符或規劃環境地政司表達,而不是...

destination-name="#{someBean.replyDestination}" 

會打電話getReplyDestination()someBean

+0

我不能把@Value(value =「somevalue」)private String queueName; 「somevalue」將是動態的 – Raheem

+0

你可以舉一個例子從java傳遞給xml。上面的一些值是動態的。我必須這樣設置。 QUEUENAME = getJobId();對不起,如果我沒有進入那麼多的水平 – Raheem

+0

你的問題不清楚。你需要提供更多的上下文。 –