2.40. JMS
发送和接收来自 JMS Queue 或 Topic 的信息。
2.40.1. 内部是什么
-
JMS 组件, URI 语法:
jms:destinationType:destinationName
有关使用和配置详情,请参阅上述链接。
2.40.2. Maven 协调
在 code.quarkus.redhat.com 上使用此扩展创建一个新项目
或者将协调添加到现有项目中:
<dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-jms</artifactId> </dependency>
2.40.3. 使用方法
2.40.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.40.3.2. 对 javax.jms.ObjectMessage 的原生模式支持
将 JMS 消息有效负载作为 javax.jms.ObjectMessage
发送时,您必须注解相关类以使用 @RegisterForReflection (serialization = true)
进行序列化。请注意,这个扩展会自动为您设置 quarkus.camel.native.reflection.serialization-enabled = true
。如需更多信息,请参阅 原生模式用户指南。
2.40.3.3. 支持连接池和 X/Open XA 分布式事务
连接池在此发行版本中为 Quarkus 的 Camel Extensions 是一个技术预览功能。
要在 camel-quarkus-jms
组件中使用连接池,您必须将 io.quarkiverse.artemis:quarkus-artemis
和 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> </dependency>
请注意,池会被默认启用。
要启用 XA,您需要在 application.properties
中添加以下配置:
quarkus.pooled-jms.xa.enabled=true
池连接不支持 clientID
和 durableSubscriptionName
。如果在池 重复使用
的连接上调用 setClientID
,则会抛出 IllegalStateException
。您将收到一些错误消息,如 Cause: setClientID 只能在创建连接后直接调用
2.40.4. 原生模式中的 transferException 选项
要在原生模式中使用 transferException
选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南。
您还需要为您要序列化的异常类启用序列化。例如:
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)