我有一個(gè) Spring Integration 流程,它使用入站網(wǎng)關(guān)從 IBM MQ 隊(duì)列獲取消息:<int-jms:inbound-gateway?id="InputGateway"??
???request-destination="RequestQueue"??
?????????request-channel="RequestChannel"
?????????reply-channel="ReplyChannel"?????
?????????/>但是我無法分配安全設(shè)置。特別是,我需要用戶名、密碼和 userAuthenticationMQCSP = false(出于超出本文范圍的原因,我不會(huì)詳細(xì)說明,但我的經(jīng)紀(jì)人將拋出 MQRC = 2009 否則)。我已按照IBM 指南連接 jmsTemplate并且工作正常。這使用 IBM MQ 的官方Spring boot starter,它將創(chuàng)建一個(gè)連接工廠,并使用 application.properties 中的一些默認(rèn)值自動(dòng)配置它:ibm.mq.queueManager=myQMName
ibm.mq.channel=myChannel
ibm.mq.connName=myhostname(myPort)
ibm.mq.user=username
ibm.mq.password=*******
ibm.mq.userAuthenticationMQCSP=false現(xiàn)在,回到 Spring Integration 案例。根據(jù)int-jms:inbound-gateway 規(guī)范,連接工廠將按名稱(屬性:連接工廠)注入到網(wǎng)關(guān),默認(rèn)設(shè)置為“jmsConnectionFactory”默認(rèn)情況下,所有需要引用 ConnectionFactory 的 JMS 適配器都會(huì)自動(dòng)查找名為 jmsConnectionFactory 的 bean。這就是為什么您在許多示例中看不到連接工廠屬性的原因。但是,如果您的 JMS ConnectionFactory 有不同的 bean 名稱,則需要提供該屬性。我沒有看到任何方法來為可以插入 int-jms:inbound-gateway 的連接工廠設(shè)置可預(yù)測(cè)的名稱?,F(xiàn)在,采用不同的方法,根據(jù)此示例,我使用適當(dāng)?shù)拿Q創(chuàng)建了連接工廠:<bean?id="jmsConnectionFactory"?class="com.ibm.mq.jms.MQQueueConnectionFactory">
?????<property?name="transportType"?value="1"/>
?????<property?name="queueManager"?value="myQMName"/>
?????<property?name="hostName"?value="myhostname"/>
?????<property?name="port"?value="myPort"?/>
?????<property?name="channel"?value="myChannel"/>
</bean>但現(xiàn)在我需要在某個(gè)地方放置憑據(jù)和安全參數(shù)。看看上面的例子,看起來我需要插入類似的東西:<bean?id="secureJmsConnectionAdapter"?class="**yourpackages.SecureJMSConnectionAdapter**">
????<property?name="targetConnectionFactory"?ref="${jms.mq.connection.factory}"?/>
????<property?name="userName"?value="${jms.username}"/>
????<property?name="pwdAlias"?value="${jms.alias}"/>
</bean>但是我不清楚如何實(shí)現(xiàn)這個(gè) SecureJMSConnectionAdapter。此外,如果我設(shè)置自己的連接工廠,由于MQAutoConfiguration 類上的此注釋,我將丟失所有 MQ boot starter automagic :@ConditionalOnMissingBean(value=javax.jms.ConnectionFactory.class)關(guān)于如何將這些部分組合在一起有什么想法嗎?編輯:為了避免對(duì)任何人造成任何可能的干擾,MQRC2009 與 ibm.mq.userAuthenticationMQCSP=false 無關(guān)。
IBM MQ 和 Spring Integration - 安全設(shè)置
當(dāng)年話下
2023-08-16 17:46:53