2.37. JMS
将消息发送到 JMS Queue 或 Topic。
2.37.1. 内部
-
JMS component, URI syntax:
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 分布式事务
连接池在此发行版本中为 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.37.4. 在原生模式中传输Exception 选项
要在原生模式中使用 transferException
选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南。
您还需要为您要序列化的异常类启用序列化。例如:
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)