O acesso à instância por um endpoint público exige configurações adicionais em determinados casos.
Escopo de aplicação
Este tópico aplica-se a instâncias do ApsaraMQ for RabbitMQ que atendem a todos os critérios a seguir:
A instância utiliza o modo de autenticação e gerenciamento de permissões open-source. Consulte Autenticação open-source.
-
A edição da instância é:
-
Serverless:
(Exclusive) Pay-by-Provisioned-Capacity-and-Elastic-Traffic
(Shared) Pay-by-Provisioned-Capacity-and-Elastic-Traffic
(Shared) Pay-by-Messaging-Request
-
Assinatura:
Enterprise Edition
Enterprise Platinum Edition
-
Um endpoint público está visível na página Instance Details.
Na página Users and Permissions da instância, crie um nome de usuário e uma senha personalizados e conceda permissões de operação no vhost de destino e nos recursos relacionados. Para mais informações, consulte Usuários e permissões.
Adicione o endereço IP público real ou o bloco CIDR do cliente à lista de permissões de endereços IP públicos da instância. Para mais informações, consulte Lista de permissões.
Na página Instance Details, obtenha o Instance ID e o endpoint público. Copie diretamente o endpoint público exibido no console. Não concatene o nome de domínio manualmente.
O valor de
aliyun_rabbitmq_instance_iddeve corresponder ao ID da instância exibido no console, e não ao endpoint público.Nas edições (Shared) Pay-by-Provisioned-Capacity-and-Elastic-Traffic e (Shared) Pay-by-Messaging-Request da série Serverless, bem como na Enterprise Edition da série Assinatura, defina essa propriedade antes de criar a conexão.
Copie e preserve as propriedades padrão obtidas por
factory.getClientProperties()para evitar sobrescrever as informações internas do cliente Java.As edições (Exclusive) Pay-by-Provisioned-Capacity-and-Elastic-Traffic da série Serverless e Enterprise Platinum Edition da série Assinatura não exigem essa propriedade. Se você definir a propriedade, o valor deverá corresponder exatamente ao ID real da instância.
Verifique se o endereço IP público real do cliente foi adicionado à lista de permissões de endereços IP públicos da instância de destino.
Para as edições (Shared) Pay-by-Provisioned-Capacity-and-Elastic-Traffic e (Shared) Pay-by-Messaging-Request da série Serverless, ou para a Enterprise Edition da série Assinatura, confirme se
aliyun_rabbitmq_instance_idestá definido e corresponde exatamente ao ID da instância de destino. As edições (Exclusive) Pay-by-Provisioned-Capacity-and-Elastic-Traffic e Enterprise Platinum Edition não exigem essa propriedade.Confirme se o nome de usuário e a senha personalizados estão corretos e se o usuário tem permissões de acesso ao vhost de destino.
Certifique-se de que o cliente está configurado com o endpoint público da instância, e não com o endpoint do service OpenAPI.
Pré-requisitos
Antes de se conectar, conclua as configurações a seguir:
Para garantir a segurança do acesso, ative a lista de permissões de endereços IP públicos ao acessar a instância pela Internet. Adicione o endereço IP público real ou o bloco CIDR do cliente à lista de permissões. Somente clientes incluídos nesse intervalo podem acessar a instância.
Configure o ID da instância no cliente
Ao se conectar pelo endpoint público, os requisitos de configuração do cliente variam conforme a edição:
|
Série da instância |
Edição |
ID da instância obrigatório |
Descrição |
|
Serverless |
(Exclusive) Pay-by-Provisioned-Capacity-and-Elastic-Traffic |
Não |
O servidor identifica automaticamente a instância de destino. |
|
Serverless |
(Shared) Pay-by-Provisioned-Capacity-and-Elastic-Traffic |
Sim |
O cliente deve especificar a instância de destino via AMQP Client Properties. |
|
Serverless |
(Shared) Pay-by-Messaging-Request |
Sim |
O cliente deve especificar a instância de destino via AMQP Client Properties. |
|
Assinatura |
Enterprise Platinum Edition |
Não |
O servidor identifica automaticamente a instância de destino. |
|
Assinatura |
Enterprise Edition |
Sim |
O cliente deve especificar a instância de destino via AMQP Client Properties. |
Exemplo de configuração Java
Se sua edição exigir o ID da instância (consulte a tabela acima), configure o endpoint público, o nome de usuário, a senha e o vhost seguindo as instruções em Usar um SDK para enviar e receber mensagens. Em seguida, adicione a configuração abaixo antes de chamar newConnection():
String instanceId = "amqp-cn-xxxxxxxx";
// The factory has been configured with the public endpoint, username, password, and vhost.
Map<String, Object> clientProperties =
new HashMap<String, Object>(factory.getClientProperties());
clientProperties.put("aliyun_rabbitmq_instance_id", instanceId);
factory.setClientProperties(clientProperties);
Connection connection = factory.newConnection();
Observe os pontos a seguir:
Solução de problemas de falha na conexão
Se a conexão pública for rejeitada, verifique os itens abaixo nesta ordem:
Para problemas relacionados a timeouts de rede, permissões de recursos ou configurações gerais de SDK, consulte Possíveis causas e soluções para falhas de conexão.