2.37. JMS


将消息发送到 JMS Queue 或 Topic。

2.37.1. 内部

有关用法和配置详情,请参阅上面的链接。

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

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

2.37.4. 在原生模式中传输Exception 选项

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

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.