17.2. 关于接收器(Acceptor)和连接器(Connector)
HornetQ 将连接器和接收器的概念作为消息系统的关键部分。
接收器和连接器
Acceptor- 接收器(Acceptor)定义 HornetQ 服务器接受哪个类型的连接。
Connector- 连接器(Connector)定义 HornetQ 客户如何使用它来连接 HornetQ 服务器。
根据配对的连接器和接收器是否处于相同的 JVM,有两种类型的连接器和接收器。
Invm 和 Netty
Invm- Invm 是 Intra Virtual Machine 的简称。当客户和服务器运行在同一个 JVM 里时可以使用它。
Netty- JBoss 项目的名称。当客户和服务器运行在不同的 JVM 里时必须使用它。
HornetQ 客户必须使用兼容其中一个服务接收器的连接器。只有 Invm 连接器可以连接 Invm 接收器,也只有 netty 连接器可以连接 netty 接收器。连接器和接收器都可以在服务器的
standalone.xml 和 domain.xml 里进行配置。您可以使用管理控制台或管理 CLI 来定义它们。
例 17.1. 默认的接收器和连接器配置示例
<connectors>
<netty-connector name="netty" socket-binding="messaging"/>
<netty-connector name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
</netty-connector>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<netty-acceptor name="netty" socket-binding="messaging"/>
<netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
配置示例也展示了 HornetQ 的 JBoss EAP 6 实现在接收器和连接器配置里是如何使用套接字绑定的。这和 HornetQ 的独立版本不同,它要求声明专门的主机和端口。