我是ArtemisMQ的新手,完全不理解connectors的意义。
为什么connector是必要的,因为我们已经在broker.xml ->中指定了代理服务器的accepter,如果我们想连接到这个服务器,我们知道要发送请求的端口(是accepter端口)。即使这个服务器是集群的一部分,connector的角色是什么?还有一些关于来自有关“集群”的文档的其他部分的信息,但是也有关于集群连接的词汇:
集群由每个节点组成,每个节点在核心配置文件broker.xml中声明到其他节点的集群连接。当一个节点形成到另一个节点的集群连接时,在内部它会在它和另一个节点之间创建一个核心桥(如core中所描述的)连接,这是在幕后透明地完成的--您不必为每个节点声明一个显式桥。这些群集连接允许消息在集群的节点之间流动,以平衡负载。
来自文件“理解连接器”:
客户端使用连接器来定义连接到服务器的方式。
“如何定义”是什么意思?
我已经读过和关于连接器的另一个问题了,但这对我没有帮助。
补充问题:
./artemis create发布于 2019-10-16 15:18:10
需要注意的两点是:
connector是,而不是必需的,这取决于您的用例。您会发现默认的broker.xml没有定义任何connector元素。例如,如果您只运行./artemis create,生成的broker.xml将没有任何connector元素。正如您所引用的文档和其他堆栈溢出回答中所指出的,代理中的某些组件需要连接到其他代理(例如,核心桥、集群连接等)。connector封装了这些其他组件建立所需连接所需的信息。就这么简单。
关于你的个人问题..。
即使这个服务器是集群的一部分,连接器的角色是什么?
对于使用broadcast-group和discovery-group的集群,集群中的每个节点都需要向集群中的所有其他节点广播其他节点如何连接到自己。它通过广播在connector配置中引用的cluster-connection来做到这一点。当集群中的其他节点接收到此广播时,它们会获取connector信息并使用它连接回原来广播它的节点。通过这种方式,节点可以动态地发现并连接到彼此。还值得注意的是,在这种情况下,connector配置将本质上反映代理的acceptor配置之一(因为其他节点将使用connector连接到广播节点的acceptor)。这一点将在集群文档中进一步讨论。
客户端使用...connectors来定义它如何连接到服务器.
您引用的这部分文档是准确的,但可能有点混乱。请记住,客户机可以在任何地方运行,甚至可以在代理本身内运行。在核心桥和集群连接的情况下,代理中有一个客户端正在运行,它使用connector来确定如何连接到另一个代理。值得注意的是,更新后的文档没有这种具体的措辞。
“如何定义”是什么意思?
connector是客户端连接到代理所需的URL。URL可以简单地包含主机和端口,也可以包含连接的许多配置细节(例如SSL配置)。
连接器总是和接受者一样吗?
不,不总是这样。在集群的情况下,由于我已经描述过的原因,它们将是相同的(或非常接近的),但在桥接器的情况下,它们将不一样。
连接器封装了什么信息?
请参见上面的。
为什么独立代理有连接器,例如默认情况下创建
./artemis create?
没有。看上面。
我们应该用连接器写什么?
连接所需的URL。
当接受者和连接器不同时,你能给出一个简单的例子吗?
如前所述,桥接是使用不同受体和连接器的一个例子。ActiveMQ Artemis在examples/features/standard目录中附带了一个“核心桥”示例,演示了不同的接收方和连接器。该示例涉及两个不同的代理,其中一个代理的核心桥配置为向另一个代理发送消息。定义了桥的broker.xml。您可以在localhost:61616和localhost:61617连接器上看到接收方在监听。此连接器指向另一个代理,即localhost:61617。
https://stackoverflow.com/questions/58416285
复制相似问题