8.5. 连接到服务器


如果要将客户端连接到服务器,您必须有一个正确的连接器。有两种方法可以做到这一点。您可以使用服务器上配置的 ConnectionFactory,可通过 JNDI 查找获取。或者,也可以使用 ActiveMQ Artemis 核心 API,并在客户端上配置整个 ConnectionFactory

8.5.1. JMS 连接事实

客户端可以使用 JNDI 来查找提供服务器连接的 ConnectionFactory 对象。连接事实可以公开三种连接器类型中的每种类型:

远程客户端可以使用 引用 remote-connector 的连接事实来向服务器发送消息或从服务器接收消息(假设 connection-factory 具有适当的导出的条目)。远程连接器与 socket-binding 关联,该 绑定使用 connection-factory 在哪里连接来告知客户端。

引用 in- vm-connector 的连接事实适合供本地客户端用于向本地服务器发送消息或接收消息。in-vm-connectorserver-id 关联,后者使用 connection-factory 进行连接的位置告知客户端,因为多个消息传递服务器可以在单个 JVM 中运行。

在升级到消息传递协议之前,引用 http-connector 的连接 事实适合供远程客户端用于通过连接到服务器的 HTTP 端口来发送消息或从服务器接收消息。http-connector 与代表 HTTP 套接字的 socket-binding 关联,默认为 http

自 JMS 2.0 起,默认的 JMS 连接工厂可供 Java EE 应用访问,其位于 JNDI 名称 java:comp/DefaultJMSConnectionFactory 下。messaging-activemq 子系统定义一个 pooled-connection-factory,用于提供此默认连接工厂。

以下是 JBoss EAP 完整 配置配置文件中所含的默认连接器和连接工厂:

<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
  <server name="default">
    [...]
    <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor" />
    <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput">
      <param name="batch-delay" value="50"/>
    </http-connector>
    <in-vm-connector name="in-vm" server-id="0"/>
    [...]
    <connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory" />
    <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/>
    [...]
    </server>
</subsystem>

工厂的 entries 属性指定将工厂公开的 JNDI 名称。只有 java:jboss/exported 命名空间内绑定的 JNDI 名称可用于远程客户端。如果 connection-factoryjava:jboss/exported 命名空间中绑定了条目,远程客户端将在 java:jboss/exported 之后使用文本查找 connection-factory。例如,RemoteConnectionFactory 默认绑定到 java:jboss/exported/jms/RemoteConnectionFactory,这意味着远程客户端将使用 jms/RemoteConnectionFactory 来查找此连接事实。pooled-connection-factory 应当不会在 java:jboss/exported 命名空间内绑定任何条目,因为 pooled-connection-factory 不适合于远程客户端。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部