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.Messageorg.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-artemisio.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
注意

池连接不支持 clientIDdurableSubscriptionName。如果在池 重复使用 的连接上调用 setClientID,则会抛出 IllegalStateException。您将收到一些错误消息,如 Cause: setClientID 只能在创建连接后直接调用

2.40.4. 原生模式中的 transferException 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南

您还需要为您要序列化的异常类启用序列化。例如:

@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.