Skip to content

Commit

Permalink
Fix #6922 to add a JMS Component customizer if Artemis JMS RA is avai…
Browse files Browse the repository at this point in the history
…liable (#6923)
  • Loading branch information
zhfeng authored Jan 21, 2025
1 parent 28b17cf commit a5d3f94
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,13 @@
*/
package org.apache.camel.quarkus.component.jms.deployment;

import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.annotations.ExecutionTime;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import org.apache.camel.quarkus.component.jms.CamelJmsRecorder;
import org.apache.camel.quarkus.core.deployment.spi.CamelContextCustomizerBuildItem;
import org.apache.camel.quarkus.core.deployment.spi.CamelSerializationBuildItem;

class JmsProcessor {
Expand All @@ -33,4 +38,15 @@ FeatureBuildItem feature() {
CamelSerializationBuildItem serialization() {
return new CamelSerializationBuildItem();
}

@BuildStep
@Record(ExecutionTime.STATIC_INIT)
void customizer(BuildProducer<CamelContextCustomizerBuildItem> customizers, CamelJmsRecorder recorder) {
try {
Class.forName("org.apache.activemq.artemis.ra.ActiveMQRAConnectionFactoryImpl");
customizers.produce(new CamelContextCustomizerBuildItem(recorder.createCamelJmsCustomizer()));
} catch (ClassNotFoundException e) {
// Only create the JMS component customizer if the ActiveMQ Artemis RA is available
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.camel.quarkus.component.jms;

import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.annotations.Recorder;
import org.apache.camel.CamelContext;
import org.apache.camel.component.jms.JmsComponent;
import org.apache.camel.spi.CamelContextCustomizer;
import org.apache.camel.spi.ComponentCustomizer;

@Recorder
public class CamelJmsRecorder {
public RuntimeValue<CamelContextCustomizer> createCamelJmsCustomizer() {
return new RuntimeValue<>(new CamelContextCustomizer() {
@Override
public void configure(CamelContext context) {
context.getRegistry().bind("jms-ra-customizer", ComponentCustomizer.forType(JmsComponent.class, component -> {
component.setCacheLevelName("CACHE_NONE");
component.setServiceLocationEnabled(false);
}));
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,7 @@ public void configure() throws Exception {
// The routes are later started in AbstractMessagingTest#beforeAll method
camelContext.setAutoStartup(false);

String cacheLevel = "";
if (isCacheLevelNone()) {
cacheLevel = "&cacheLevelName=CACHE_NONE";
}

fromF("%s:queue:testJmsMessageType?concurrentConsumers=5%s", componentScheme, cacheLevel)
fromF("%s:queue:testJmsMessageType?concurrentConsumers=5", componentScheme)
.toF("%s:queue:testJmsMessageType2", componentScheme);

String disableStreaming = "";
Expand Down Expand Up @@ -120,13 +115,4 @@ private boolean isDisableStreaming() {
return false;
}
}

private boolean isCacheLevelNone() {
try {
Class.forName("org.apache.activemq.artemis.ra.ActiveMQRAConnectionFactoryImpl");
return !componentScheme.getScheme().startsWith("sjms");
} catch (ClassNotFoundException e) {
return false;
}
}
}

0 comments on commit a5d3f94

Please sign in to comment.