Database Connector トラブルシューティング - Mule 4

データベース用 Anypoint Connector (Database Connector) をトラブルシューティングするには、原因と可能な解決策を確認します。

プーリングプロファイル接続によるフローのハング

フローで使用されるよりも少ない接続を提供するプーリングプロファイルを使用すると、フロー全体がハングする可能性があります。

解決策

解決策の 1 つとして、プールのサイズを増やすことが挙げられます。ただし、この方法が使用できないこともあります。その場合、別の解決策として、VM メッセージの有効期間と同じになるように、VM Connector を使用して接続の有効期間を短くします。こうすることで、​Stored procedure​ 操作へのすべてのコールが実行されて、その結果がコンシュームされ、操作に関連付けられている接続が終了してプールに戻ります。

次の例は、​Stored procedure​ 操作と VM Connector でプーリングプロファイルを使用する方法を示しています。​foreach​ 要素が 11 番目の反復に到達すると、プールで接続を提供できるようになるため、​Stored procedure​ 操作がハングしなくなります。

	<db:config name="Database_Config">
		<db:generic-connection url="someUrl" user="someUser" password="somePassword" driverClassName="someDriver">
			<db:pooling-profile maxPoolSize="10">
			</db:pooling-profile>
		</db:generic-connection>
	</db:config>

	<vm:config name="VM_Config">
		<vm:queues >
			<vm:queue queueName="testQueue" />
		</vm:queues>
	</vm:config>

	<flow name="processingFlow">
		<foreach collection="#[1 to 11]">
			<logger level="INFO" message="#['Starting Iteration ' ++ payload as String]" />
			<vm:publish config-ref="VM_Config" queueName="testQueue"/>
			<logger level="INFO" message="#['Finishing Iteration ' ++ payload as String]"/>
		</foreach>
	</flow>

	<flow name="coolFlow">
		<vm:listener config-ref="VM_Config" queueName="testQueue" numberOfConsumers="1"/>
		<db:stored-procedure config-ref="Database_Config">
				<db:sql><![CDATA[{call testProc2()}]]></db:sql>
			</db:stored-procedure>
		<logger level="INFO" message="#[output application/json --- payload.resultSet1]" />
	</flow>