2.37. JMS
发送和接收消息到 JMS Queue 或 Topic。
2.37.1. 内部内容
-
JMS 组件, URI 语法:
jms:destinationType:destinationName
有关使用和配置详情,请参阅上述链接。
2.37.2. Maven 协调
在 code.quarkus.redhat.com 上创建一个具有此扩展名的新项目
或者在现有项目中添加协调:
<dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-jms</artifactId> </dependency>
2.37.3. 使用方法
2.37.3.1. 带有 org.w3c.dom.Node
的消息映射
Camel JMS 组件支持 javax.jms.Message
和 org.apache.camel.Message
之间的消息映射。当希望转换 org.w3c.dom.Node
的 Camel 消息正文类型时,您必须确保 classpath 上存在 camel-quarkus-jaxp
扩展。
2.37.3.2. 对 javax.jms.ObjectMessage 的原生模式支持
当发送 JMS 消息有效负载为 javax.jms.ObjectMessage
时,您必须使用 @RegisterForReflection (serialization = true)
为序列化注解相关类。
此扩展会自动为您设置 quarkus.camel.native.reflection.serialization-enabled = true
。如需更多信息,请参阅 原生模式用户指南。
2.37.3.3. 支持连接池和 X/Open XA 分布式事务
连接池是这个 Camel Extensions for Quarkus 发行版本中的技术预览功能。
要在 camel-quarkus-jms 组件中使用连接池,您必须将 io.quarkiverse.artemis:quarkis-jms 和 io.quarkiverse.messaginghub:quarkus-pooled-jms 添加到 pom.xml 中,并设置以下配置:
quarkus.pooled-jms.max-connections = 8
您可以使用 quarkus-pooled-jms
扩展来获取对 JMS 连接的池和 XA 支持。如需更多信息,请参阅 quarkus-pooled-jms 扩展文档。目前,它只适用于 quarkus-artemis-jms
扩展。只需将这两个依赖项添加到 pom.xml
中:
<dependency> <groupId>io.quarkiverse.messaginghub</groupId> <artifactId>quarkus-pooled-jms</artifactId> </dependency> <dependency> <groupId>io.quarkiverse.artemis</groupId> <artifactId>quarkus-artemis-jms</artifactId> <version>2.0.1</version> </dependency>
池默认为启用。
要启用 XA,您需要在 application.properties
中添加以下配置:
quarkus.pooled-jms.xa.enabled=true
pooling
连接不支持 clientId 和 durableSubscriptionName
。如果在从池中 重复使用
的连接中调用 setClientID
,则会抛出 IllegalStateException
。您将收到一些错误消息,如 Cause: setClientID,只能在创建连接后直接调用
2.37.4. 原生模式中的 transferException 选项
要在原生模式中使用 transferException
选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南。
您还需要为您要序列化的异常类启用序列化。例如:
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)