我想用EmbeddedActiveMQBroker创建连接,还想在Message中设置String属性,以便侦听器可以从Message中提取这些String属性。我想使用Message.class发送和接收消息。
我的目标是在这个消息集合中生成消息,并将消息生成到输入队列。下一部分是我的侦听器应该能够从这个输入队列中侦听,并能够从消息中提取这些字符串属性。
import org.apache.activemq.junit.EmbeddedActiveMQBroker;
import org.junit.ClassRule;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
public class JmsMessageListeningAndSendingTest extends IntegrationTestBase {
@ClassRule
public static EmbeddedActiveMQBroker embeddedBroker = new EmbeddedActiveMQBroker();
}
x
Application.yml
activemq:
broker-url: tcp://localhost:61616
close-timeout: 15
packages:
trusted: com.broker.activemq.entities,java.lang
password: admin
user: admin
in-memory: true
pool:
enabled: false
build.gradle
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.1'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.1'
testImplementation 'org.mockito:mockito-junit-jupiter:4.8.1'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.cloud:spring-cloud-starter-contract-stub-runner:4.1.0'
testImplementation 'org.mockito:mockito-core:5.8.0'
testImplementation 'org.testcontainers:testcontainers:1.19.3'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.apache.activemq:activemq-broker:6.0.1'
implementation 'org.apache.activemq:activemq-all:6.0.1'
testImplementation 'org.apache.activemq.tooling:activemq-junit:6.0.1'
testImplementation 'org.testcontainers:junit-jupiter:1.16.3'
Error Description:
java.lang.NoClassDefFoundError: javax/jms/JMSException
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at org.apache.activemq.junit.EmbeddedActiveMQBroker.<init>(EmbeddedActiveMQBroker.java:69)
的数据
1条答案
按热度按时间kg7wmglp1#
正如注解中所指出的,这一定是SB3(jaktip)和ActiveMQ嵌入式版本的依赖性问题。
从v6开始,ActiveMQ现在是兼容jakmet的。
你应该使用下面的6.0.1,并尝试看看它是否解决了你的问题。
梅文:
字符串
或gradle:
型
如果这个依赖本身没有修复,你仍然可以按照guide从java创建EmbeddedServer。
编辑
在看到gradle文件后,错误部分是
型
它将混合ActiveMQ 6与5个依赖项。
你也应该升级到6.0.1